The ANT task allows you to run Bundlor from inside any ANT based build system
The following procedure shows how to set up Bundlor inside of an existing ANT build file
Define a bundlor
namespace
<project name="bundlor-sample-ant" xmlns:bundlor="antlib:com.springsource.bundlor.ant">
Import the bundlor
task into your build
<target name="bundlor.init"> <taskdef resource="com/springsource/bundlor/ant/antlib.xml" uri="antlib:com.springsource.bundlor.ant"> <classpath id="bundlor.classpath"> <fileset dir="${bundlor.home}/dist"/> <fileset dir="${bundlor.home}/lib"/> </classpath> </taskdef> </target>
This example uses a very simplistic method for building the bundlor
task
classpath. It is possible to use a dependency manager such as Ivy to better manage the classpath of
Bundlor.
Use the bundlor
task, as shown in the following example. See
Section 4.2.2, “ANT Task Reference” for details about the parameters of the task.
<bundlor:bundlor inputPath="${basedir}/target/classes" outputPath="${basedir}/target/classes" bundleVersion="1.0.2.BUILD-${timestamp}" manifestTemplatePath="${basedir}/template.mf" > <property name="name" value="${ant.project.name}" /> </bundlor:bundlor>
The following table lists all the attributes that you can specify for the bundlor
ANT task.
Table 4.2. Attributes
Attribute | Description | Required |
---|---|---|
bundleSymbolicName | The OSGi Bundle-SymbolicName for the resulting manifest | No |
bundleVersion | The OSGi Bundle-Version for the resulting manifest | No |
enabled | Whether Bundlor should create a manifest | No - defaults to true |
failOnWarnings | Whether Bundlor should cause a build failure when there are warnings warnings about the resulting manifest | No - defaults to false |
inputPath | The path to the input to create a manifest for. This can either be a directory or a JAR file. | Yes |
manifestTemplatePath | The path to the manifest template. See Chapter 5, Manifest Templates for details. | No |
osgiProfilePath | The path to the OSGi profile. See Chapter 6, OSGI Profiles and Bundlor for details. | No |
outputPath |
The path to write the manifest to. This can either be a directory, a JAR file, or not specified.
If a directory is specified, the manifest will be written to
If a JAR file is specified, the manifest will be written as the manifest for that JAR file.
If nothing is specified, the manifest will be written to
| No - defaults to System.out |
propertiesPath | The path to a properties file used for substitution. See Section 5.3, “Specifying property placeholders” for details. | No |
Manifest templates can be optionally specified inline instead of as an external file using the
<manifestTemplate/>
element.
<bundlor:bundlor> <manifestTemplate> Bundle-ManifestVersion: 2 Bundle-Name: Bundlor Core Bundle-Vendor: SpringSource Inc. Bundle-SymbolicName: com.springsource.bundlor Bundle-Version: 0 </manifestTemplate> </bundlor:bundlor>
See Chapter 5, Manifest Templates for details.
OSGI profiles can be optionally specified inline instead of as an external file using the
<osgiProfile/>
element.
<bundlor:bundlor> <osgiProfile> org.osgi.framework.system.packages = \ javax.accessibility,\ javax.activation,\ javax.activation;version="1.1.0",\ javax.activity,\ javax.annotation,\ ... org.osgi.framework.bootdelegation = \ com_cenqua_clover,\ com.cenqua.*,\ com.yourkit.*,\ ... </osgiProfile> </bundlor:bundlor>
See Chapter 6, OSGI Profiles and Bundlor for details.
Property substitution values can be optionally specified inline instead of as an external file using the
<property/>
and <propertySet/>
elements.
<bundlor:bundlor> <property name="bundle.name" value="Kernel test bundle"/> <property name="bundle.version" value="1.0.2.BUILD-${timestamp}"/> <propertyset> <propertyref builtin="all"/> </propertyset> </bundlor:bundlor>
See Section 5.3, “Specifying property placeholders” for details.
<bundlor:bundlor inputPath="${basedir}/target/classes" outputPath="${basedir}/target/classes" bundleVersion="1.0.2.BUILD-${timestamp}" manifestTemplatePath="${basedir}/template.mf"/>
<bundlor:bundlor inputPath="${basedir}/target/classes" outputPath="${basedir}/target/target/classes" bundleVersion="1.0.2.BUILD-${timestamp}" manifestTemplatePath="${basedir}/template.mf"> <property name="bundle.name" value="Kernel test bundle"/> <property name="bundle.version" value="1.0.2.BUILD-${timestamp}"/> </bundlor:bundlor>