6.2. Modifying an Existing Maven Project
Overview
If you already have a Maven project and you want to modify it so that it generates an OSGi bundle, perform the following steps:
Change the package type to bundle
Configure Maven to generate an OSGi bundle by changing the package type to
bundle
in your project's pom.xml
file. Change the contents of the packaging
element to bundle
, as shown in the following example:
<project ... >
...
<packaging>bundle</packaging>
...
</project>
The effect of this setting is to select the Maven bundle plug-in,
maven-bundle-plugin
, to perform packaging for this project. This setting on its own, however, has no effect until you explicitly add the bundle plug-in to your POM.
Add the bundle plug-in to your POM
To add the Maven bundle plug-in, copy and paste the following sample
plugin
element into the project/build/plugins
section of your project's pom.xml
file:
<project ... > ... <build> <defaultGoal>install</defaultGoal> <plugins> ... <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <version>2.3.7</version> <extensions>true</extensions> <configuration> <instructions> <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName> <Import-Package>*</Import-Package> </instructions> </configuration> </plugin> </plugins> </build> ... </project>
Where the bundle plug-in is configured by the settings in the
instructions
element.
Customize the bundle plug-in
For some specific recommendations on configuring the bundle plug-in for Apache CXF and Apache Camel, see Section 6.3, “Packaging a Web Service in a Bundle” and ???.
For an in-depth discussion of bundle plug-in configuration, in the context of the OSGi framework and versioning policy, see "Managing OSGi Dependencies".
Customize the JDK compiler version
It is almost always necessary to specify the JDK version in your POM file. If your code uses any modern features of the Java language—such as generics, static imports, and so on—and you have not customized the JDK version in the POM, Maven will fail to compile your source code. It is not sufficient to set the
JAVA_HOME
and the PATH
environment variables to the correct values for your JDK, you must also modify the POM file.
To configure your POM file, so that it accepts the Java language features introduced in JDK 1.6, add the following
maven-compiler-plugin
plug-in settings to your POM (if they are not already present):
<project ... > ... <build> <defaultGoal>install</defaultGoal> <plugins> ... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> </plugins> </build> ... </project>