Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 19 Next »

Apache Ant integration

IzPack can be easily integrated inside an Ant build process.

You need to have the following prerequisites installed on your local system:

  • a Java runtime environment (Oracle JRE, OpenJDK etc.), version 6 or above,
    Apache Ant will probably require the $JAVA_HOME environment variable to be set to it.
  • a preinstalled version of the Apache Ant runtime (version 1.6.5 or above),
  • the latest distribution installer of IzPack 5.


The IzPack task takes the following parameters as attributes:
  • input: the XML installation file. The installation can be specified as an external file, or embedded using a config child element.
  • output: the output jar installer file
  • installerType: (optional), possible values: standard or web. If web, the <webdir> attribute must be specified in the input file. Used to force creation of a standard installer when the <webdir> attribute has been used.
  • inheritAll: (optional, boolean). If true all properties defined in the ant build process are transmitted to izpack parser for substitution. 

  • baseDir: the base directory to resolve the relative paths
  • izPackDir: the IzPack home directory (the target directory when executing the izpack-dist.jar)
  • mkdirs: whether to automatically create the parent directories of the installer jar to be built.
  • inheritAll: If true, pass all Ant properties to IzPack. Defaults to false.
  • compression: The compression format to set for pack compression.
    Possible values: default | bzip2 | raw
    Default: default (the internal deflate compression - zip format)
  • compressionLevel: The compression level if the default compression format is used.
    Possible values: -1 (choose default compression level), 0 (fastest compression) .. 9 (best compression)
    Default: -1 

Nested elements:

  • <config>
    Used for embedding the contents of install.xml as CDATA directly to the build file (see the example in the section below)
  • <property>
    Add a property to the build visible only to the IzPack task. The Syntax is the same like for defining properties in Ant.
  • <propertyset>
    Add a property set to the build visible only to the IzPack task. The Syntax is the same like for defining a propertyset in Ant. 

Here is how the Ant build file may look like:

Example
<?xml version="1.0" encoding="UTF-8"?>

<project name="izpack" default="compile">
  
  <property name="izpack-dist" value="${user.home}/IzPack"/>
  <property name="izpack-installer" value="setup.jar"/>
  
  <path id="lib.path">
    <fileset dir="${izpack-dist}/lib" includes="*.jar"/>
  </path>
  
  <taskdef name="izpack"
           classname="com.izforge.izpack.ant.IzPackTask"
           classpathref="lib.path"
           />
  
  <target name="compile">
    <echo message="Makes the installer using IzPack to ${izpack-installer}"/>
    <izpack input="${basedir}/src/main/resources/install.xml"
            output="${basedir}/${izpack-installer}"  
            installerType="standard"              
            basedir="${basedir}/src/main/resources"
            izPackDir="${izpack-dist}"/>
    <echo message="${izpack-installer} created"/>
  </target>
  
</project>

The above assumes that the IzPack distribution has been installed to ${user.home}/IzPack.

You can find a fully compilable example here:

Using the above example:

  • Download the latest distribution installer and install it locally ($HOME/IzPack is assumed to be the installation directory).
  • Unpack test.zip in a working directory of your choice.
  • Call the Ant build (tested with Ant 1.9.6):
    cd test
    ant

It builds an executable installer setup.jar in the working directory.

Embedding the installation file contents as CDATA

Instead of using the 'input' attribute to specify an external installation document, you can embed the installation config as a child of the IzPack task using a config child element with a CDATA section.

Example
<property name="jboss.home.url" value="http://www.jboss.com/" />
...
 
<!-- Call IzPack with an embedded install using the config element -->
<IzPack output="${dist.dir}/IzPack-install.jar"
        installerType="standard"
        basedir="${dist.dir}"
        inheritAll="true"
        IzPackDir="${dist.dir}/">
        <config><![CDATA[
<installation version="1.0">
   <info>
      <appname>JBossAS</appname>
      <appversion>4.0.2</appversion>
      <appsubpath>jboss-4.0.2</appsubpath>
      <authors>
         <author name="JBoss Inc." email="sales@jboss.com"/>
      </authors>
      <url>@{jboss.home.url}</url>
      <javaversion>1.4</javaversion>
   </info>
...
        ]]></config>
</IzPack>


Property references of the form

@{x}

are replaced by the associated x ant property if it is defined.

  • No labels