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">

...

How to use the iPOJO Maven Plug-in

Div
classtoc
Table of Contents
maxLevel4
minLevel2

Basic configuration

To use the iPOJO Maven plug-in, edit the following pom.xml (replace all

...

$XXX elements):

panel
Div
classpom

<project>
 <modelVersion>4.0.0</modelVersion>

 <packaging>bundle</packaging> <!-- Use the BND Maven plug-in -->
  <groupId>$YOUR_GROUP_ID</groupId>
  <artifactId>$YOUR_ARTIFACT_ID</artifactId>
  <version>$YOUR_ARTIFACT_VERSION</version>
  <name>$YOUR_PROJECT_NAME</name>

  <dependencies>
    $YOUR_MAVEN_DEPENDENCIES
  </dependencies>

 <build>
   <plugins>
     <!-- BND Maven Plugin Configuration -->
     <plugin>
       <groupId>org.apache.felix</groupId>
       <artifactId>maven-bundle-plugin</artifactId>
        <extensions>true</extensions>
        <configuration>
          <instructions>
            <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
           <Private-Package>$YOUR_PRIVATE_PACKAGE</Private-Package>
           <Export-Package>$YOUR_EXPORTED_PACKAGE</Export-Package>
         </instructions>
       </configuration>
     </plugin>
     <!-- iPOJO Maven Plugin Configuration : nothing to do -->
     <plugin>
             <groupId>org.apache.felix</groupId>
             <artifactId>maven-ipojo-plugin</artifactId>
             <version>1.

0

6.0</version>
        <executions>
          <execution>
              <goals>
                     <goal>ipojo-bundle</goal>
              </goals>
         </execution>
       </executions>
     </plugin>
   </plugins>
 </build>
</project>

The iPOJO Maven Plug-in is generally used with the BND Maven Plug-in (more details here). However the two configurations are completely separated. So, you can use all BND Maven plug-in features. The iPOJO configuration section can be used as previously written without any changes. However it requires that your metadata file is either inside src/main/ipojo or inside the

...

src/main/resources

...

folder and

...

named "metadata.xml".

Execution

To manipulate your project, use the "mvn clean install" command. The output should be like:

\

[INFO

\

]

Scanning

for

projects...

\


[INFO

\

]

\

---------------------------------------------------------------------------

\

-

\


[INFO

\

]

Building

Hello

Client

\


[INFO

\]&nbsp;&nbsp;&nbsp;task

]   task-segment:

\

[clean,

install

\

]

\


[INFO

\

]

\

---------------------------------------------------------------------------

\

-

\


[INFO

\

]

\

[clean:clean

\

]

\


[INFO

\

]

Deleting

directory

D:\clement\workspaces\iPOJO-Dev\hello.client\target

\


[INFO

\

]

Deleting

directory

D:\clement\workspaces\iPOJO-Dev\hello.client\target\classes

\


[INFO

\

]

Deleting

directory

D:\clement\workspaces\iPOJO-Dev\hello.client\target\test-classes

\


[INFO

\

]

Deleting

directory

D:\clement\workspaces\iPOJO-Dev\hello.client\target\site

\


[INFO

\

]

\

[resources:resources

\

]

\


[INFO

\

]

Using

default

encoding

to

copy

filtered

resources.

\


[INFO

\

]

Copying

1

resource

\


[INFO

\

]

\

[compiler:compile

\

]

\


[INFO

\

]

Compiling

1

source

file

to

D:\clement\workspaces\iPOJO-Dev\hello.client\target\classes

\


[INFO

\

]

\

[resources:testResources

\

]

\


[INFO

\

]

Using

default

encoding

to

copy

filtered

resources.

\


[INFO

\

]

Resource

directory

does

not

exist:

D:\clement\workspaces\iPOJO-Dev\hello.client\src\test\resources

\


[INFO

\

]

\

[compiler:testCompile

\

]

\


[INFO

\

]

No

sources

to

compile

\


[INFO

\

]

\

[surefire:test

\

]

\


[INFO

\

]

No

tests

to

run.

\


[INFO

\

]

\

[bundle:bundle

\

]

\


[INFO

\

]

\

[org.apache.felix.ipojo.:ipojo-bundle

\

{execution:

default}

\

]

\


[INFO

\

]

Start

bundle

manipulation

\


[INFO

\

]

Metadata

File

:

D:\clement\workspaces\iPOJO-Dev\hello.client\target\classes\metadata.xml

\


[INFO

\

]

Input

Bundle

File

:

D:\clement\workspaces\iPOJO-Dev\hello.client\target\hello.client-0.0.1.jar

\


[INFO

\

]

Bundle

manipulation

-

SUCCESS

\


[INFO

\

]

\

[install:install

\

]

\


[INFO

\

]

Installing

D:\clement\workspaces\iPOJO-Dev\hello.client\target\hello.client-0.0.1.jar

to

D:\Dev\maven-repo\ipojo\example\hello.client\0.0.1\hello.client-0.0.1.jar

\


[INFO

\

]

\

-----------------------------------------------------------------------

\

-

\


[INFO

\

]

BUILD

SUCCESSFUL

\


[INFO

\

]

\

-----------------------------------------------------------------------

\

-

\


[INFO

\

]

Total

time:

9

seconds

\


[INFO

\

]

Finished

at:

Mon

Aug

13

14:04:55

CEST

2007

\


[INFO

\

]

Final

Memory:

6M/13M

\


[INFO

\

]

\

-----------------------------------------------------------------------

\

-

Div
classpom
Panel
Wiki Markup

Configuration Options

You can configure the localization of the iPOJO metadata file as following:

panel
Div
class
pom

<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-ipojo-plugin</artifactId>
    <version>1.

0

6.0</version>
    <executions>
        <execution>
        <goals>
            <goal>ipojo-bundle</goal>
        </goals>
        <configuration>
             <metadata>ipojo/meta.xml</metadata>
        </configuration>
        </execution>
   </executions>
</plugin>

In the metadata element, you can specify your metadata

...

file or directory. The given file path is relative to the root directory ("./ipojo/meta.xml"). If the specified location is a directory, all contained XML files will be used. By default, the plugin searches metadata files into the src/main/ipojo folder. If not found then it searches for target/classes/metadata.xml and ./metadata.xml.

Note: The directory support was introduced in the 1.7.0 version. Previously only one metadata file was found.
Compatibility: Before the 1.7.0, the set location was searched in all resource folders. This is no more supported because it's an anti-pattern.

The second option allows skipping annotations processing, by using the ignoreAnnotations element:

panel
Div
classpom

<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-ipojo-plugin</artifactId>
    <version>1.

0

6.0</version>
    <executions>
        <execution>
        <goals>
            <goal>ipojo-bundle</goal>
        </goals>
        <configuration>
            <ignoreAnnotations>true</ignoreAnnotations>
        </configuration>
        </execution>
   </executions>
</plugin>

Wiki Markup

You

...

can

...

also

...

ignore

...

embedded

...

XML-Schemas

...

to

...

use

...

external

...

ones.

...

To

...

do

...

so,

...

add

...

the

...

ignoreEmbeddedSchemas

...

.

...

If

...

set

...

to

...

true

...

,

...

the

...

manipulator

...

doesn't

...

use

...

embedded

...

XML-Schemas

...

:

panel
Div
classpom

<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-ipojo-plugin</artifactId>
    <version>1.

0

6.0</version>
    <executions>
        <execution>
        <goals>
            <goal>ipojo-bundle</goal>
        </goals>
        <configuration>
            <ignoreEmbeddedSchemas>true</ignoreEmbeddedSchemas>
        </configuration>
        </execution>
   </executions>
</plugin>

Generate the skeleton of your iPOJO bundle

The maven-ipojo-plugin provides a way to generate the skeleton of your project. To generate this structure, just launch the following command:

Code Block

mvn org.apache.maven.plugins:maven-archetype-plugin:
create
generate \
-DarchetypeArtifactId=maven-ipojo-plugin \
-DarchetypeGroupId=org.apache.felix \
-DartifactId=ARTIFACT_NAME_OF_YOUR_PROJECT \
-DgroupId=GROUP_ID_OF_YOUR_PROJECT \
-DarchetypeVersion=VERSION_OF_YOUR_PROJECT \
-DpackageName=PACKAGE_NAME

This command generates :

  • a pom file (to

...

  • update),
  • the src/main/java and src/main/resources folders,
  • the structure of your package name.

The generated project uses iPOJO annotation and is ready to be deployed.

Info
titleMaven Archetype

The

src/main/resources folder contains a metadata.xml file to fill out.Note: the

maven-ipojo-plugin archetype

gerenrate

generates a pom file using the latest released version of the

mavne

maven-ipojo-plugin.

unmigrated-wiki-markup

Describing

...

iPOJO

...

configuration

...

in

...

the

...

pom

...

file

...

It is also possible to describe iPOJO components and instances inside the pom file (avoiding using a externalized file). The configuration can be described in the metadata attribute inside a CDATA block.

codexmlxml
Div
class
pom
<plugin>

<plugin>
   <groupId>org.apache.felix</groupId>


   <artifactId>maven-ipojo-plugin</artifactId>


   <version>1.

1

6.

0-SNAPSHOT<

0</version>

<executions> <execution> <goals>


   <executions>
       <execution>
       <goals>
       <goal>ipojo-bundle</goal>


       </goals>

<configuration>


       <configuration>
       <ignoreAnnotations>true</ignoreAnnotations>

<metadata>


       <metadata>
       <![CDATA[

<ipojo


       <ipojo
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"


       xsi:schemaLocation="org.apache.felix.ipojo

http://felix.apache.org/ipojo/schemas/

1.1.0-SNAPSHOT

CURRENT/core.xsd"


       xmlns="org.apache.felix.ipojo">

<component


        <component
        classname="org.apache.felix.ipojo.test.scenarios.component.LifecycleControllerTest"


        name="LFC-Test">

<provides /> <controller


        <provides />
        <controller field="m_state"

/>

<properties> <property


        <properties>
        <property name="conf"

field="m_conf"

method="setConf"

/>


        </properties>

</component> <component


        </component>
        <component
        classname="org.apache.felix.ipojo.test.scenarios.component.LifecycleControllerTest"


        name="LFC-Test-Immediate"

immediate="true"

architecture="true">

<provides /> <controller


        <provides />
        <controller field="m_state"

/>

<properties> <property


        <properties>
        <property name="conf"

field="m_conf"

method="setConf"

/>


        </properties>


        </component>


       </ipojo>


       ]]>


    </metadata>


    </configuration>


    </execution>


   </executions>


</plugin>

Column
width20%



Include Page

...

apache-felix-ipojo-

...

footer

...

apache-felix-ipojo-

...

footer