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, 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.
Here is how the Ant build file may look like:
<?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.
The IzPack task takes the following parameters:- 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. 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)
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 using a config element
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. For example:
... <!-- 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> </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.