Versions Compared

Key

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

...

For bigger projects with many modules it is a good practise to separate launching of the IzPack Maven Plugin in a separate modules or even more, having one module per application installer to be built.


 

Info
titleNote

For the izpack-jar mapping is important to add the <extensions>true</extensions>. If you don't, Maven will not be able to see this as a valid packaging. See the example usage below.

 


Configuration

 
Configuration AttributeValue RangeDefault ValueDescription

baseDir

string
${project.build.directory}/staging
Base directory of compilation process

installFile

string
${basedir}/src/main/izpack/install.xml
Location of the IzPack installation file.

comprFormat

default | gz | bzip2

default

Target compression format of the compiled installer jar

comprLevel

integer -1, 0..9

-1
Compression level of the compiled installer jar. Deactivated by default (-1)

outputDirectory

 
 | xz | lzma | deflate

default

Optional compression format for single files defined in <packs>. All files in all packs except those explicitly marked as <pack200/> are automatically added compressed in the given format and uncompressed later when the installer starts. This may significantly decrease the installer size, but take some more time to compile the installer and install the files later.

See also Compressing pack files for more information on this feature.

Since: IzPack 5.1 (has been broken in 5.0)

comprLevel

integer -1, 0..9

9
The compression level of the resulting installer jar file.
This attribute has nothing in common with the compression attribute declared above, which defines compression for single files added in packs, but defines just the compression level of the whole installer jar file itself.

outputDirectory


${project.build.directory}
Target directory containing the compiled installer jar

mkdirs

true | false
false
Whether to automatically create parent directories of the output file

finalName

 

 


Name of the compiled installer jar
classifier
 

Not setClassifier to add to the artifact generated. If given, the artifact is attachable. Furthermore, the output file name gets -classifier as suffix. If this is not given,it will merely be written to the output directory according to the finalName.
enableAttachArtifact
true | false
true
Whether to attach the generated installer jar to the project as artifact if a classifier is specified. This has no effect if no classifier was specified.

enableOverrideArtifact

true | false
false
Whether to override the artifact file by the generated installer jar, if no classifier is specified. This will set the artifact file to the given name based on outputDirectory + finalName or on output. This has no effect if a classifier is specified.

autoIncludeUrl

true | false
false

Whether to automatically include project.url from Maven into the IzPack info header

autoIncludeDevelopers

true | false
false

Whether to automatically include developer list from Maven into IzPack info header

kind

standard | web
standard

Resulting installer type

Example Usage

Code Block
titleExample usage of IzPack Maven Plugin (packaging type izpack-jar)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>
 
  ...


  <!-- Launch IzPack automatically -->
  <packaging>izpack-jar</packaging>

  <properties>
    <!-- Installer variables -->
    <staging.dir>${project.build.directory}/staging</staging.dir>
    <info.appName>My Killer Application</info.appName>
    <info.appsubpath>my-killer-app/standard</info.appsubpath>
    <izpack.dir.app>${basedir}/src/main/izpack</izpack.dir.app>
    <staging.dir.app>${staging.dir}/appfiles</staging.dir.app>
  </properties>


  ...
 
  <plugin>
    <groupId>org.codehaus.izpack</groupId>
    <artifactId>izpack-maven-plugin</artifactId>
    <extensions>true</extensions>
    <configuration>
      <baseDir>${staging.dir.app}</baseDir>
      <installFile>${izpack.dir.app}/install.xml</installFile>
      <outputDirectory>${project.build.directory}</outputDirectory>
      <finalName>${project.build.finalName}</finalName>
      <enableOverrideArtifact>true</enableOverrideArtifact>
      <mkdirs>true</mkdirs>
      <autoIncludeUrl>false</autoIncludeUrl>
      <autoIncludeDevelopers>false</autoIncludeDevelopers>
    </configuration>
  </plugin>
 
  ...
 
</project>

...

Code Block
titleDependency Definition for IzPack and application components
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>
 
  ...

  <!-- Launch IzPack automatically -->
  <packaging>izpack-jar</packaging>

  <properties>
    <!-- Installer variables -->
    <staging.dir>${project.build.directory}/staging</staging.dir>
    <info.appName>My Killer Application</info.appName>
    <info.appsubpath>my-killer-app/standard</info.appsubpath>
    <izpack.dir.app>${basedir}/src/main/izpack</izpack.dir.app>
    <staging.dir.app>${staging.dir}/appfiles</staging.dir.app>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.codehaus.izpack</groupId>
      <artifactId>izpack-panel</artifactId>
      <version>${my.izpackplugin.version}</version>
    </dependency>


    <dependency>
      <groupId>com.example.myApp</groupId>
      <artifactId>my-killer-app-main</artifactId>
      <version>${project.parent.version}</version>
    </dependency>
    <dependency>
      <groupId>com.example.myApp</groupId>
      <artifactId>my-killer-app-core</artifactId>
      <version>${project.parent.version}</version>
    </dependency>
      .....
  </dependencies>
 
</project

...


To get the dependencies into the staging structure, the Maven copy dependency plugin can be invoked.

 


Code Block
titleCopy application components to the staging directory
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>
 
  ...

  <!-- Launch IzPack automatically -->
  <packaging>izpack-jar</packaging>

  <properties>
    <!-- Installer variables -->
    <staging.dir>${project.build.directory}/staging</staging.dir>
    <info.appName>My Killer Application</info.appName>
    <info.appsubpath>my-killer-app/standard</info.appsubpath>
    <izpack.dir.app>${basedir}/src/main/izpack</izpack.dir.app>
    <staging.dir.app>${staging.dir}/appfiles</staging.dir.app>
  </properties>
  <build>
   <plugins>

   ...
 
    <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-dependency-plugin</artifactId>
     <version>2.10</version>
     <configuration>
       <outputDirectory>${staging.dir}/lib</outputDirectory>
       <excludeTransitive>true</excludeTransitive>
       <stripVersion>true</stripVersion>
       <overWriteReleases>true</overWriteReleases>
       <overWriteSnapshots>true</overWriteSnapshots>
       <overWriteIfNewer>true</overWriteIfNewer>
       <excludeScope>system</excludeScope>
     </configuration>
     <executions>
      <execution>
       <id>copy</id>
       <phase>process-resources</phase>
       <goals>
        <goal>copy-dependencies</goal>
       </goals>
      </execution>
     </executions>
    </plugin>
 
     ...

   </plugins>
  </build>

</project

...


This tells Maven to find the dependencies listed in the <dependencies> section and copy then to the lib folder in the staging directory staging.dir

...