DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
Bundle Plugin for Maven
This plugin for Maven 2 is based on the BND tool from Peter Kriens. The way BND works is by treating your project as a big collection of classes (e.g., project code, dependencies, and the class path). The way you create a bundle with BND is to tell it the content of the bundle's JAR file as a subset of the available classes. This plugin wraps BND to make it work specifically with the Maven 2 project structure and to provide it with reasonable default behavior for Maven 2 projects.
Simple Example
Rather than going straight to a detailed list of plugin features, we will first look at a simple example of how to use the plugin to give an immediate flavor. A detailed "how to" will follow.
Assume that we have a simple bundle project that has a pubic API package an several implementation packages, such as:
org.foo.myproject.api org.foo.myproject.impl1 org.foo.myproject.impl2 ...
If we also assume that we have a bundle activator in one of the implementation packages, then <plugins> section of the POM file would look like this:
...
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Export-Package>org.foo.myproject.api</Export-Package>
<Private-Package>org.foo.myproject.*</Private-Package>
<Bundle-Activator>org.foo.myproject.impl1.Activator</Bundle-Activator>
</instructions>
</configuration>
</plugin>
<plugins>
...
The <Export-Package> and <Private-Package> instructions tell the plugin about the contents of the bundle JAR file. The <Export-Package> instruction tells the plugin which of the available packages to include into the bundle and to export, while the <Private-Package> instruction indicates which of the available packages to include into the bundle but not export. If the two sets overlap, as they do in the case, then the export takes precedence. Since we did not specify any values for any other bundle manifest headers, they will assume default values which are described below. One specific behavior to highlight is that the plugin generates the Import-Package bundle manifest header based on the specified contents of the bundle, which means that you generally do not ever need to specify it. That's it.
Features
The BND library underlying the plugin defines instructions to direct its functionality. For this Maven plugin, these instructions are issues in the plugin configuration section of the POM file, as was illustrated [above|#simple-example}. BND recognizes three types of instructions:
- Manifest headers - Any instruction that starts with a capital letter will appear in the resulting bundle's manifest file; the value will either be copied, augmented, or generated by BND depending on the instruction.
- Variables
- Directives
Default Behavior
Instructions