Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3
Include Page
apache-felix-ipojo-header
apache-felix-ipojo-header

HTML

<div class="content">

iPOJO Ant Task

iPOJO

...

width80%

IPOJO Ant Task

...

Ant Task allows automating the iPOJO manipulation process within an Ant build process. This page explains how to use the iPOJO Ant Task and how to combine them with the BND Tasks.

Div
classtoc
Table of Contents
maxLevel4
minLevel2

Downloading the iPOJO Ant Task

The iPOJO Ant Task can ben downloaded from here.

How to use the Ant Task

The iPOJO Ant task take an input bundle and a metadata file and create the final (i.e. manipulated) bundle.
To use the task declare a target in your build.xml as:

panel
Div
class
pom

<target name="main">

        <taskdef

    <!-- Change the path to point on the iPOJO Ant task jar-->
    <taskdef name="ipojo"

classpath


        classname="org.apache.felix.ipojo.

ant-0.7.6-SNAPSHOT.jar" classname

task.IPojoTask"
        classpath="org.apache.felix.ipojo

.task.IPojoTask"/> <!---Change the path to point on the iPOJO Ant task jar -->
        <ipojo
               input

.ant-1.6.0.jar"/>

    <ipojo
        input="foo.jar"

               metadata

        metadata = "meta.xml"

       

    />
</target>

First, define the new task. Then simply use it. The input argument describe the input bundle (must exists) and the metadata argument describes the metadata file (must exist too). The input bundle must be a well-formed bundle.

Ant Task Arguments

The iPOJO Ant Task as three different arguments:

  • Input: describes the input bundle. This argument is mandatory.
  • Output: describes the output bundle. This argument is optional. If not present, the output file will be input file.
  • Metadata: describes the metadata file. This argument is optional. By default, it tries with a metadata.xml file (in the same directory as the build.xml file). If the default file is not present, it tries to use only iPOJO annotations.
  • IgnoreAnnotations: if set to

...

  • true

...

  • , the manipulator skips annotations processing (can reduce significantly the processing time on huge bundle).
  • IgnoreEmbeddedSchemas: if set to true, the manipulator doesn't use embedded XML-Schemas

Combining the iPOJO Ant Task and BND

The iPOJO Ant Task requires an input bundle. BND is a tools simplifying bundle creation. So, it is possible to combine the two tools to create your bundle automatically. The following build.xml shows you an example of combination.

panel
Div
classpom

<project default="main" basedir=".">

        <target

    <target name="bnd">
      <!-- Change to use the latest BND version –>

           <taskdef

      <taskdef resource="aQute/bnd/ant/taskdef.properties"

             classpath

        classpath="bnd-0.0.178.jar"/>

<!-- Change to use the latest BND version -->
           <bnd
              classpath


      <bnd
        classpath="src"

              eclipse

        eclipse="true"

              failok

        failok="false"

              exceptions

        exceptions="true"

             

        files="foo.bnd"/>

         <

    </

target>    

target>

 <target

    <target name="main" depends="bnd">

       

       <echo message="Call main"/>

        <taskdef

      <!-- Change the path to point on the iPOJO Ant task jar -->
      <taskdef name="ipojo"

classpath


        classname="org.apache.felix.ipojo.

ant-0.7.6-SNAPSHOT.jar" classname

task.IPojoTask"
        classpath="org.apache.felix.ipojo.

task.PojoTask

ant-1.6.0.jar" />

<!---Change the path to point on the iPOJO Ant task jar -->
        <ipojo
              


      <ipojo
        input="foo.jar"

               metadata

        metadata = "meta.xml"

       

       />

<

    </target>
</project>

The first target creates the bundle with BND. More details on the BND Ant Task are available here. To combine the BND output and the iPOJO input, the iPOJO input need to be the same as the BND file but with the ".jar" extension. For instance, the BND file is foo.bnd, so the input jar must be foo.jar.
To be sure that the BND bundle is already created, you can add the "depends" clause in the target using the iPOJO task to the target creating the bundle.

However, it is possible to create only one target doing the two operations as:

panel
Div
classpom

<target name="main"

>
  <taskdef resource

>
    <!-- Change to use the latest BND version -->
    <taskdef
      resource="aQute/bnd/ant/taskdef.properties"

             classpath

      classpath="bnd-0.0.178.jar"/>

      <!-- Change the path to

use the latest BND version

point on the iPOJO Ant task jar -->

  <taskdef

      <taskdef name="ipojo"

classpath


        classname="org.apache.felix.ipojo.

ant-0.7.5-SNAPSHOT.jar" classname

task.IPojoTask"
        classpath="org.apache.felix.ipojo

.task.IPojoTask"/> <!---Change the path to point on the iPOJO Ant task jar -->
       <bnd
              classpath

.ant-1.6.0.jar"/>

    <bnd
        classpath="src"

              eclipse

        eclipse="true"

              failok

        failok="false"

              exceptions

        exceptions="true"

              files

        files="foo.bnd"/>

        <ipojo
              input

    <ipojo
      input="foo.jar"

              metadata

      metadata = "meta.xml"/>
</target>

Directory manipulation

The manipulator can take a directory in input. In this case, classes from this folder is manipulated. You can also set the manifest file location too. Here in an example of configuration using this mode:

Code Block
xml
xml

<target name="manipulate">		
     <ipojo
	dir="${output..}" <!-- Manipulated directory -->
	metadata="metadata.xml"
	manifest="META-INF/MANIFEST.MF"  <!-- Manifest location -->
    />
</target>
Info
titleManifest location

If not set, the manifest is searched in the given directory/META-INF folder (i.e. $dir/META-INF/MANIFEST.MF).

Conclusion

Subscribe to the Felix users mailing list by sending a message to users-subscribe@felix.apache.org; after subscribing, email questions or feedback to users@felix.apache.org.

...



Include Page

...

apache-felix-ipojo-

...

footer

...

apache-felix-ipojo-

...

footer