Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
xml
xml
<dependencies>
  <dependency>
    <groupId>com.mycompany</groupId>
    <artifactId>myapplication</artifactId>
    <version>1.0-SNAPSHOT</version>
 </dependency>
  <dependency>
    <groupId>com.mycompany</groupId>
    <artifactId>myapplication-utilities</artifactId>
    <version>1.0-SNAPSHOT</version>
 </dependency>
 <dependency>
    <groupId>com.mycompany</groupId>
    <artifactId>mycustompanels</artifactId>
    <version>1.0-SNAPSHOT</version>
 </dependency>
</dependencies>

...

Code Block
xml
xml
<plugin>
   <groupId>org.codehaus.izpack</groupId>
   <artifactId>izpack-maven-plugin</artifactId>
   <version>${izpack.version}</version>
   <executions>
      <execution>
         <phase>package</phase>
         <goals><goal>izpack</goal></goals>
         <configuration>
            <!-- base for relative paths in izpack descriptor -->
            <baseDir>${izpack.staging}</baseDir>
            <installFile>${basedir}/src/izpack/install.xml</installFile>
         </configuration>
      </execution>
   </executions>
   <dependencies>
      <dependency>
         <groupId>org.codehaus.izpack</groupId>
         <artifactId>izpack-panel</artifactId>
         <version>${izpack.version}</version>
      </dependency>
          .
          .
          .
    </dependencies>
 </plugin>

...

When finished, the entire build section of our pom should look something like this:

Code Block
xml
xml
<?xml version="1.0"?>
<build>
  <plugins>
    <!-- copy izpack resources into izpack staging area, expected by izpack.xml -->
    <plugin>
      <artifactId>maven-antrun-plugin</artifactId>
      <executions>
        <execution>
          <id>create-staging-area</id>
          <phase>process-resources</phase>
          <goals>
            <goal>run</goal>
          </goals>
          <configuration>
            <tasks>
              <copy todir="${izpack.staging}">
                <fileset dir="${basedir}/src/izpack"/>
              </copy>
            </tasks>
          </configuration>
        </execution>
      </executions>
    </plugin>
    <plugin>
      <artifactId>maven-dependency-plugin</artifactId>
      <configuration>
        <excludeTransitive>false</excludeTransitive>
        <stripVersion>true</stripVersion>
        <overWriteReleases>true</overWriteReleases>
        <overWriteSnapshots>true</overWriteSnapshots>
        <overWriteIfNewer>true</overWriteIfNewer>
        <excludeScope>system</excludeScope>
      </configuration>
      <executions>
        <execution>
          <!-- copy product jars to izpack staging lib -->
          <id>copy-product-dependencies</id>
          <phase>prepare-package</phase>
          <goals>
            <goal>copy-dependencies</goal>
          </goals>
          <configuration>
            <outputDirectory>${izpack.staging}/lib</outputDirectory>
            <excludeScope>system</excludeScope>
            <!-- this excludes tools.jar, e.g. -->
            <excludeArtifactIds>mycustompanels</excludeArtifactIds>
            <excludeGroupIds>org.codehaus.izpack</excludeGroupIds>
          </configuration>
        </execution>
        <execution>
          <!-- copy izpack custom (custom panels, etc.) jars to izpack staging custom -->
          <id>copy-izpack-dependencies</id>
          <phase>prepare-package</phase>
          <goals>
            <goal>copy-dependencies</goal>
          </goals>
          <configuration>
            <outputDirectory>${izpack.staging}/custom</outputDirectory>
            <includeArtifactIds>mycustompanels</includeArtifactIds>
          </configuration>
        </execution>
      </executions>
    </plugin>
    <plugin>
      <groupId>org.codehaus.izpack</groupId>
      <artifactId>izpack-maven-plugin</artifactId>
      <executions>
        <execution>
          <phase>package</phase>
          <goals>
            <goal>izpack</goal>
          </goals>
          <configuration>
            <!-- base for relative paths in izpack descriptor -->
            <baseDir>${izpack.staging}</baseDir>
            <installFile>${basedir}/src/izpack/install.xml</installFile>
          </configuration>
        </execution>
      </executions>
      <dependencies>
        <dependency>
          <groupId>org.codehaus.izpack</groupId>
          <artifactId>izpack-panel</artifactId>
          <version>${izpack.version}</version>
        </dependency>
	   <dependency>
    <dependency>      <groupId>com.mycompany</groupId>
          <artifactId>myapplication</artifactId>
          <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
          <groupId>com.mycompany</groupId>
          <artifactId>mycustompanels</artifactId>
          <version>1.0-SNAPSHOT</version>
        </dependency>
      </dependencies>
    </plugin>
  </plugins>
</build>

As mentioned at the start of this article, the dependencies of your application are project dependencies and need to be specified as normal Maven dependencies in the project's dependencies section.

Code Block
xml
xml
<dependencies>
  <dependency>
    <groupId>com.mycompany</groupId>
    <artifactId>myapplication</artifactId>
    <version>1.0-SNAPSHOT</version>
 <artifactId>mycustompanels<</artifactId>dependency>
  <dependency>
    <groupId>com.mycompany</groupId>
  <version>1.0</version>  <artifactId>myapplication-utilities</artifactId>
    <version>1.0-SNAPSHOT</version>
 </dependency>
 <dependency>
    <<groupId>com.mycompany</dependencies>groupId>
    </plugin>
<artifactId>mycustompanels</artifactId>
    <version>1.0-SNAPSHOT</version>
 </plugins>dependency>
</build>dependencies>

Using Custom Panels

If you have custom panels, they should be developed in a separate Maven project. This is a standard Maven project, but you should include izPack as a provided dependency:

...

This example include a section for custom panels which may be omitted if it does not apply.

Code Block
xml
xml
<plugin>
   <groupId>org.codehaus.izpack</groupId>
   <artifactId>izpack-maven-plugin</artifactId>
   <version>${izpack.version}</version>
   <executions>
      <execution>
         <phase>package</phase>
         <goals><goal>izpack</goal></goals>
         <configuration>
            <!-- base for relative paths in izpack descriptor -->
            <baseDir>${izpack.staging}</baseDir>
            <installFile>${basedir}/src/izpack/install.xml</installFile>
         </configuration>
      </execution>
   </executions>
   <dependencies>
      <dependency>
         <groupId>org.codehaus.izpack</groupId>
         <artifactId>izpack-panel</artifactId>
         <version>${izpack.version}</version>
      </dependency>
      <dependency>
         <groupId>com.mycompany</groupId>
         <artifactId>mycustompanels</artifactId>
         <version>1.0<0-SNAPSHOT</version>
      </dependency>
    </dependencies>
 </plugin>
Some key points:
  • Even though the custom panels dependency is declared as a project dependency, it also must be declared as a dependency to the IzPack plugin itself, or else you will see classloading errors. Maven gives every plugin execution its own classloader, which cannot see the classpath of the project itself.
Add the <execution> section
  • Add the second execution section to copying of the custom panels jar to the custom/ directory under our staging directory (i.e., target/staging/custom). Note that we explicitly include our custom panels dependency so that no other jars are copied to custom/. It wouldn't hurt anything if this happened, but why do unnecessary work.
Summary

When finished, the entire build section of the pom should look something like this:

Code Block
xml
xml
<?xml version="1.0"?>
.
.
.
<build>
  <plugins>
    <!-- copy IzPack resources into IzPack staging area, expected by izpack.xml -->
    <plugin>
      <artifactId>maven-antrun-plugin</artifactId>
      <executions>
        <execution>
          <id>create-staging-area</id>
          <phase>process-resources</phase>
          <goals>
            <goal>run</goal>
          </goals>
          <configuration>
            <tasks>
              <copy todir="${izpack.staging}">
                <fileset dir="${basedir}/src/izpack"/>
              </copy>
            </tasks>
          </configuration>
        </execution>
      </executions>
    </plugin>
    <plugin>
      <artifactId>maven-dependency-plugin</artifactId>
      <configuration>
        <excludeTransitive>false</excludeTransitive>
        <stripVersion>true</stripVersion>
        <overWriteReleases>true</overWriteReleases>
        <overWriteSnapshots>true</overWriteSnapshots>
        <overWriteIfNewer>true</overWriteIfNewer>
        <excludeScope>system</excludeScope>
      </configuration>
      <executions>
        <execution>
          <!-- copy product jars to izpack staging lib -->
          <id>copy-product-dependencies</id>
          <phase>prepare-package</phase>
          <goals>
            <goal>copy-dependencies</goal>
          </goals>
          <configuration>
            <outputDirectory>${izpack.staging}/lib</outputDirectory>
            <excludeScope>system</excludeScope>
            <!-- this excludes tools.jar, e.g. -->
            <excludeArtifactIds>mycustompanels</excludeArtifactIds>
            <excludeGroupIds>org.codehaus.izpack</excludeGroupIds>
          </configuration>
        </execution>
        <execution>
          <!-- copy izpack custom (custom panels, etc.) jars to izpack staging custom -->
          <id>copy-izpack-dependencies</id>
          <phase>prepare-package</phase>
          <goals>
            <goal>copy-dependencies</goal>
          </goals>
          <configuration>
            <outputDirectory>${izpack.staging}/custom</outputDirectory>
            <includeArtifactIds>mycustompanels</includeArtifactIds>
          </configuration>
        </execution>
      </executions>
    </plugin>
    <plugin>
      <groupId>org.codehaus.izpack</groupId>
      <artifactId>izpack-maven-plugin</artifactId>
      <executions>
        <execution>
          <phase>package</phase>
          <goals>
            <goal>izpack</goal>
          </goals>
          <configuration>
            <!-- base for relative paths in izpack descriptor -->
            <baseDir>${izpack.staging}</baseDir>
            <installFile>${basedir}/src/izpack/install.xml</installFile>
          </configuration>
        </execution>
      </executions>
      <dependencies>
        <dependency>
          <groupId>org.codehaus.izpack</groupId>
          <artifactId>izpack-panel</artifactId>
          <version>${izpack.version}</version>
        </dependency>
        <dependency>
          <groupId>com.mycompany</groupId>
          <artifactId>mycustompanels</artifactId>
          <version>1.0</version>
        </dependency>
      </dependencies>
    </plugin>
  </plugins>
</build>


...