seam iText integration libraries

seam iText integration seems to use older version of iText jars, would it be possible to use the latest iText 5.0.2 specific jars as part of the maven dependencies. Has anyone done this before?

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

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.

        <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>

Answers


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.

First, jboss-seam-pdf-2.2.0.GA.jar has the following dependencies (skipping exclusions, refer to the root POM org.jboss.seam:root:2.2.0.GA.pom for full details):

<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>

Second, the only itext 5.0.2 artifact I could find is the one mentioned in this thread (and available in the repository http://maven.itextpdf.com/):

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

As we can see it has different groupId and artifactId than the previous itext dependencies so we can't use Maven'sdependencyManagement here to force the use of this version (assuming this artifact replaces the previous one, I have no idea about this). So this leaves us with exclusions. Something like this:

<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>

With this POM, the dependency tree becomes:

$ 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
...

I'm not saying this will work at runtime, I'm just giving you a way to replace a dependency with Maven.


Need Your Help

iOS app launching another app on Facebook login

ios iphone facebook swift

Installed in my iOS device, I have 5 personal apps (that is, developed by myself). Any app is related to a single Facebook app, that manages login for any of those apps. Problem is the following: w...