...
Include Page | |||
---|---|---|---|
|
|
...
Wiki Markup |
---|
{html}
<div class="content">
{html} |
...
How
...
to
...
use
...
the
...
iPOJO
...
Maven
...
Plug-in
Wiki Markup |
---|
{div:class=toc} {toc:maxLevel=4|minLevel=2} {div} h2. |
Basic
...
configuration
...
To
...
use
...
the
...
iPOJO
...
Maven
...
plug-in,
...
edit
...
the
...
following
...
pom.xml
...
(replace
...
all
...
$XXX
...
elements):
Wiki Markup |
---|
{ {div:class=pom} <project> <modelVersion>4.0.0</modelVersion> <packaging>bundle</packaging> <!-- Use the BND Maven plug-in --> {color:red} {color} {color:red}<groupId>$YOUR_GROUP_ID</groupId>{color} {color:red} {color} {color:red}<artifactId>$YOUR_ARTIFACT_ID</artifactId>{color} {color:red} {color} {color:red}<version>$YOUR_ARTIFACT_VERSION</version>{color} {color:red} {color} {color:red}<name>$YOUR_PROJECT_NAME</name>{color} {color:red} {color} {color:red}<dependencies>{color} {color:red} {color} {color:red}$YOUR_MAVEN_DEPENDENCIES{color} {color:red} {color} {color:red}</dependencies>{color} <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> {color:red} {color}{color:red}<Private-Package>$YOUR_PRIVATE_PACKAGE</Private-Package>{color} {color:red} {color}{color:red}<Export-Package>$YOUR_EXPORTED_PACKAGE</Export-Package>{color} </instructions> </configuration> </plugin> <!-- iPOJO Maven Plugin Configuration : nothing to do --> <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-ipojo-plugin</artifactId> <version>1.6.0</version> <executions> <execution> <goals> <goal>ipojo-bundle</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project> {div} |
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:
Wiki Markup |
---|
h2. Execution To manipulate your project, use the "_mvn clean install_" command. The output should be like: {div:class=pom} \[INFO\] Scanning for projects... \[INFO\] \---------------------------------------------------------------------------\- \[INFO\] Building Hello Client \[INFO\] 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} h2. |
Configuration
...
Options
...
You
...
can
...
configure
...
the
...
localization
...
of
...
the
...
iPOJO
...
metadata
...
file
...
as
...
following:
Wiki Markup |
---|
{div: {div:class=pom} <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-ipojo-plugin</artifactId> <version>1.6.0</version> <executions> <execution> <goals> <goal>ipojo-bundle</goal> </goals> <configuration> {color:red}<metadata>ipojo/meta.xml</metadata>{color} </configuration> </execution> </executions> </plugin> {div} |
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:
Wiki Markup |
---|
the {{ignoreAnnotations}} element: {div:class=pom} <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-ipojo-plugin</artifactId> <version>1.6.0</version> <executions> <execution> <goals> <goal>ipojo-bundle</goal> </goals> <configuration> {color:red}<ignoreAnnotations>true</ignoreAnnotations>{color} </configuration> </execution> </executions> </plugin> {div} |
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:
Wiki Markup |
---|
{div:class=pom} <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-ipojo-plugin</artifactId> <version>1.6.0</version> <executions> <execution> <goals> <goal>ipojo-bundle</goal> </goals> <configuration> {color:red}<ignoreEmbeddedSchemas>true</ignoreEmbeddedSchemas>{color} </configuration> </execution> </executions> </plugin> {div} h2. Generate the skeleton of your iPOJO bundle The |
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: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 {code} |
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 | ||||||
---|---|---|---|---|---|---|
| =
|
| ||||
}
The maven-ipojo-plugin archetype generates a pom file using the latest released version of the maven-ipojo-plugin. |
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.
Wiki Markup |
---|
{info} h2. 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. {div:class=pom} <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-ipojo-plugin</artifactId> <version>1.6.0</version> <executions> <execution> <goals> <goal>ipojo-bundle</goal> </goals> <configuration> <ignoreAnnotations>true</ignoreAnnotations> <metadata> <![CDATA[ <ipojo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/CURRENT/core.xsd" xmlns="org.apache.felix.ipojo"> <component classname="org.apache.felix.ipojo.test.scenarios.component.LifecycleControllerTest" name="LFC-Test"> <provides /> <controller field="m_state" /> <properties> <property name="conf" field="m_conf" method="setConf" /> </properties> </component> <component classname="org.apache.felix.ipojo.test.scenarios.component.LifecycleControllerTest" name="LFC-Test-Immediate" immediate="true" architecture="true"> <provides /> <controller field="m_state" /> <properties> <property name="conf" field="m_conf" method="setConf" /> </properties> </component> </ipojo> ]]> </metadata> </configuration> </execution> </executions> </plugin> {div} \\ \\ {include: |
Include Page | ||||
---|---|---|---|---|
|
...