Python中文网

一个关于 编程问题的解答网站.

有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java seam iText集成库

seam iText集成似乎使用了旧版本的iText JAR,是否可以使用最新的iText 5.0.2特定JAR作为maven依赖项的一部分。以前有人这样做过吗

http://repository.jboss.org/maven2/org/jboss/seam/jboss-seam-pdf/2.2.0.GA/jboss-seam-pdf-2.2.0.GA.pomhttp://repository.jboss.org/maven2/com/lowagie/itext/2.1.2/itext-2.1.2.pom

以下依赖项使用2.1.2版本的iText,但不确定如何使其使用最新版本的5.0.2

        <dependency>
            <groupId>org.jboss.seam</groupId>
            <artifactId>jboss-seam-pdf</artifactId>
            <version>${jboss-seam.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.jboss.seam</groupId>
                    <artifactId>jboss-seam</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.jboss.seam</groupId>
                    <artifactId>jboss-seam-ui</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

共 (1) 个答案

  1. # 1 楼答案

    The following dependency uses 2.1.2 version of iText, not sure how to make it use the latest version 5.0.2 of iText.

    首先,jboss-seam-pdf-2.2.0.GA.jar具有以下依赖项(跳过排除,请参阅根POM^{}了解完整详细信息):

    <dependency>
      <groupId>com.lowagie</groupId>
      <artifactId>itext</artifactId>
      <version>2.1.2</version>
      ...
    </dependency>
    <dependency>
      <groupId>com.lowagie</groupId>
      <artifactId>itext-rtf</artifactId>
      <version>2.1.2</version>
      ...
    </dependency>
    

    其次,我能找到的唯一itext 5.0.2工件是this thread中提到的(可在存储库http://maven.itextpdf.com/中找到):

    <dependency>
      <groupId>com.itextpdf</groupId>
      <artifactId>itextpdf</artifactId>
      <version>5.0.2</version>
    </dependency>
    

    正如我们所见,它与之前的itext依赖项有不同的groupIdartifactId,所以我们不能在这里使用Maven的dependencyManagement来强制使用这个版本(假设这个工件替换了之前的一个,我对此一无所知)。这就给我们留下了exclusions。比如:

    <project>
      ...
      <properties>
        <jboss-seam.version>2.2.0.GA</jboss-seam.version>
      </properties>
      <repositories>
        <repository>
          <id>itext</id>
          <url>http://maven.itextpdf.com</url>
        </repository>
        <repository>
          <id>jboss</id>
          <url>http://repository.jboss.org/maven2</url>
        </repository>
      </repositories>
      <dependencies>
        ...
        <dependency>
          <groupId>org.jboss.seam</groupId>
          <artifactId>jboss-seam-pdf</artifactId>
          <version>${jboss-seam.version}</version>
          <exclusions>
            <exclusion>
              <groupId>org.jboss.seam</groupId>
              <artifactId>jboss-seam</artifactId>
            </exclusion>
            <exclusion>
              <groupId>org.jboss.seam</groupId>
              <artifactId>jboss-seam-ui</artifactId>
            </exclusion>
            <exclusion>
              <groupId>com.lowagie</groupId>
              <artifactId>itext</artifactId>
            </exclusion>
            <exclusion>
              <groupId>com.lowagie</groupId>
              <artifactId>itext-rtf</artifactId>
            </exclusion>
          </exclusions>
        </dependency>
        <dependency>
          <groupId>com.itextpdf</groupId>
          <artifactId>itextpdf</artifactId>
          <version>5.0.2</version>
        </dependency>
      </dependencies>
    </project>
    

    使用此POM,依赖关系树变为:

    $ mvn dependency:tree
    ...
    [INFO] [dependency:tree {execution: default-cli}]
    [INFO] com.statckoverflow:Q2793234:jar:1.0-SNAPSHOT
    [INFO] +- junit:junit:jar:3.8.1:test
    [INFO] +- org.jboss.seam:jboss-seam-pdf:jar:2.2.0.GA:compile
    [INFO] |  \- com.sun.facelets:jsf-facelets:jar:1.1.15.B1:compile
    [INFO] \- com.itextpdf:itextpdf:jar:5.0.2:compile
    ...
    

    我并不是说这在运行时会起作用,我只是给你一种用Maven替换依赖项的方法