<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title>Apache Felix - Apache Felix Maven Bundle Plugin (BND)</title>


  
    
    <link rel="stylesheet" href="apache-felix-maven-bundle-plugin-bnd_files/site.css" type="text/css" media="all">
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"></head><body>
    <div class="title"><div class="logo"><a href="http://felix.apache.org/site/index.html"><img alt="Apache Felix" src="apache-felix-maven-bundle-plugin-bnd_files/logo.png" border="0"></a></div><div class="header"><a href="http://www.apache.org/"><img alt="Apache" src="apache-felix-maven-bundle-plugin-bnd_files/apache.png" border="0"></a></div></div>
    <div class="menu">
<ul>
	<li><a href="http://felix.apache.org/site/news.html" title="news">news</a></li>
	<li><a href="http://felix.apache.org/site/license.html" title="license">license</a></li>
	<li><span class="nobr"><a href="http://felix.apache.org/site/downloads.cgi" title="Visit page outside Confluence" rel="nofollow">downloads<sup><img class="rendericon" src="apache-felix-maven-bundle-plugin-bnd_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></li>
	<li><a href="http://felix.apache.org/site/documentation.html" title="documentation">documentation</a></li>
	<li><a href="http://felix.apache.org/site/mailinglists.html" title="mailinglists">mailing lists</a></li>
	<li><a href="http://felix.apache.org/site/contributing.html" title="Contributing">contributing</a></li>
	<li><span class="nobr"><a href="http://www.apache.org/" title="Visit page outside Confluence" rel="nofollow">asf<sup><img class="rendericon" src="apache-felix-maven-bundle-plugin-bnd_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></li>
	<li><span class="nobr"><a href="http://www.apache.org/foundation/sponsorship.html" title="Visit page outside Confluence" rel="nofollow">sponsorship<sup><img class="rendericon" src="apache-felix-maven-bundle-plugin-bnd_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></li>
	<li><span class="nobr"><a href="http://www.apache.org/foundation/thanks.html" title="Visit page outside Confluence" rel="nofollow">sponsors<sup><img class="rendericon" src="apache-felix-maven-bundle-plugin-bnd_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span>
<!-- ApacheCon Ad -->
<iframe src="apache-felix-maven-bundle-plugin-bnd_files/button.html" style="border-width: 0pt; float: left; display: none;" frameborder="0" height="135" scrolling="no" width="135"></iframe>
<p style="height: 100px;">
<!-- ApacheCon Ad -->
</p></li></ul> </div>
    <div class="main">
<h1><a name="ApacheFelixMavenBundlePlugin(BND)-BundlePluginforMaven"></a>Bundle Plugin for Maven</h1>

<p>This plugin for Maven 2 is based on the <span class="nobr"><a href="http://www.aqute.biz/Code/Bnd" title="Visit page outside Confluence" rel="nofollow">BND<sup><img class="rendericon" src="apache-felix-maven-bundle-plugin-bnd_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span>
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.</p>

<p>Since the 1.4.0 release, this plugin also aims to automate OBR (OSGi
Bundle Repository) management. It helps manage a local OBR for your
local Maven repository, and also supports remote OBRs for bundle
distribution. The plug-in automatically computes bundle capabilities
and requirements, using a combination of Bindex and Maven metadata.</p>

<p><a name="ApacheFelixMavenBundlePlugin(BND)-simpleexample"></a></p>

<h1><a name="ApacheFelixMavenBundlePlugin(BND)-SimpleExample"></a>Simple Example</h1>

<p>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 "<a href="#ApacheFelixMavenBundlePlugin%2528BND%2529-howto" title="how-to on Apache Felix Maven Bundle Plugin (BND)">how to</a>" will follow.</p>

<p>Assume that we have a simple bundle project that has a pubic API package an several implementation packages, such as:</p>

<div class="preformatted"><div class="preformattedContent">
<pre>org.foo.myproject.api
org.foo.myproject.impl1
org.foo.myproject.impl2
...
</pre>
</div></div>

<p>If we also assume that we have a bundle activator in one of the implementation packages, then the <tt>&lt;plugins&gt;</tt> section of the POM file for this bundle project would look like this:</p>

<div class="preformatted"><div class="preformattedContent">
<pre>...
&lt;plugins&gt;
  &lt;plugin&gt;
    &lt;groupId&gt;org.apache.felix&lt;/groupId&gt;
    &lt;artifactId&gt;maven-bundle-plugin&lt;/artifactId&gt;
    &lt;extensions&gt;true&lt;/extensions&gt;
    &lt;configuration&gt;
      &lt;instructions&gt;
        &lt;Export-Package&gt;org.foo.myproject.api&lt;/Export-Package&gt;
        &lt;Private-Package&gt;org.foo.myproject.*&lt;/Private-Package&gt;
        &lt;Bundle-Activator&gt;org.foo.myproject.impl1.Activator&lt;/Bundle-Activator&gt;
      &lt;/instructions&gt;
    &lt;/configuration&gt;
  &lt;/plugin&gt;
&lt;/plugins&gt;
...
</pre>
</div></div>

<p>The <tt>&lt;Export-Package&gt;</tt> and <tt>&lt;Private-Package&gt;</tt> instructions tell the plugin about the contents of the resulting bundle JAR file. The <tt>&lt;Export-Package&gt;</tt> instruction tells the plugin which of the available packages to copy into the bundle <b>and</b> export, while the <tt>&lt;Private-Package&gt;</tt> instruction indicates which of the available packages to copy into the bundle <b>but not</b>
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 <a href="#ApacheFelixMavenBundlePlugin%2528BND%2529-defaultbehavior" title="default-behavior on Apache Felix Maven Bundle Plugin (BND)">below</a>. One specific behavior to highlight is that the plugin generates the <tt>Import-Package</tt>
bundle manifest header based on the contents of the bundle, which means
that you generally do not ever need to explicitly specify it yourself.
That's it.</p>

<h1><a name="ApacheFelixMavenBundlePlugin(BND)-Features"></a>Features</h1>

<p>The BND library underlying the plugin defines instructions to direct
its behavior. For this Maven plugin, these instructions are issued in
the plugin configuration section of the POM file, as was illustrated <a href="#ApacheFelixMavenBundlePlugin%2528BND%2529-simpleexample" title="simple-example on Apache Felix Maven Bundle Plugin (BND)">above</a>. BND recognizes three types of instructions:</p>

<ol>
	<li><em>Manifest headers</em> - Any instruction that starts with
a capital letter will appear in the resulting bundle's manifest file;
the value for the header will either be copied, augmented, or generated
by BND depending on the instruction.</li>
	<li><em>Variables</em> - Any instruction starting with a lowercase letter is assumed to be a variable in the form of a name-value pair, such as <tt>version=3.0</tt>, that can be used for property substitution, but is not copied to the manifest.</li>
	<li><em>Directives</em>
- Any instruction starting with a '-' character is considered to be a
directive that informs BND to perform some special processing and is
not copied to the manifest.</li>
</ol>


<p>The remainder of this section covers the most important aspects of BND's instructions; for complete details refer to the <span class="nobr"><a href="http://www.aqute.biz/Code/Bnd" title="Visit page outside Confluence" rel="nofollow">BND documentation<sup><img class="rendericon" src="apache-felix-maven-bundle-plugin-bnd_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span>.</p>

<p><a name="ApacheFelixMavenBundlePlugin(BND)-instructions"></a></p>

<h2><a name="ApacheFelixMavenBundlePlugin(BND)-Instructions"></a>Instructions</h2>

<h3><a name="ApacheFelixMavenBundlePlugin(BND)-{{&lt;ExportPackage&gt;}}"></a><tt>&lt;Export-Package&gt;</tt></h3>

<p>The <tt>&lt;Export-Package&gt;</tt> instruction is a list of
packages for the bundle to export. These packages are copied into the
resulting bundle JAR file from the available classes (i.e., project
classes, dependencies, and class path); thus, it is possible to include
classes into your bundle that are not associated with source files in
your project. <tt>&lt;Export-Package&gt;</tt> can be specified with
package patterns using the '*' wildcard. Also, it is possible to
exclude packages using negation by starting the package pattern with
'!'. Thus, non-negated patterns indicate which of the available
packages to include in the bundle, whereas negated patterns indicate
which should not be included in the bundle.</p>

<p>The list of package patterns is ordered and earlier patterns are applied before later patterns. For example, if you specify "<tt>org.foo.*,!org.foo.impl</tt>" the second pattern has no effect since all <tt>org.foo</tt> packages have already been selected by the first pattern. Instead, you should specify "<tt>!org.foo.impl,org.foo.*</tt>", which will export all <tt>org.foo</tt> packages except <tt>org.foo.impl</tt>.</p>

<p>Following standard OSGi R4 syntax, package patterns can include both
directives and attributes, which will be copied appropriately into the
generated Export-Package manifest header. Besides explicitly listing
package version attributes, BND will also determine package versions by
examining the source JAR file or from <tt>packageinfo</tt> files in the package directory.</p>

<h3><a name="ApacheFelixMavenBundlePlugin(BND)-{{&lt;PrivatePackage&gt;}}"></a><tt>&lt;Private-Package&gt;</tt></h3>

<p>The <tt>&lt;Private-Package&gt;</tt> instruction is similar in every way to the <tt>&lt;Export-Package&gt;</tt> instruction, except for the fact that these packages will <b>not</b>
be exported by the bundle. If a package is selected by both the export
and private package headers, then the export takes precedence.</p>

<h3><a name="ApacheFelixMavenBundlePlugin(BND)-{{&lt;IncludeResource&gt;}}"></a><tt>&lt;Include-Resource&gt;</tt></h3>

<p>The <tt>&lt;Include-Resource&gt;</tt> instruction is a list of
arbitrary resources that should be copied into the bundle JAR file. The
specified resources are declared as clauses that can have the following
forms:</p>

<div class="preformatted"><div class="preformattedContent">
<pre>clause ::= assignment | inline | simple
assignment ::= PATH '=' PATH
simple ::= PATH
inline ::= '@' PATH
</pre>
</div></div>

<p>For the <tt>&lt;Include-Resource&gt;</tt> instruction, actual file paths are relative to the <tt>pom.xml</tt>, while file copy destinations are relative to the root of the resulting bundle JAR file. In the case of <tt>assignment</tt> or <tt>simple</tt> forms, the <tt>PATH</tt> parameter can point to a file or directory. The <tt>simple</tt>
form will place the resource in the bundle JAR with only the file name,
i.e., without any path component. For example, including <tt>src/main/resources/a/b.c</tt> will result in a resource <tt>b.c</tt> in the root of the bundle JAR. If the <tt>PATH</tt>
points to a directory, the entire directory hierarchy is copied into
the resulting bundle JAR file relative to the specified directory. If a
specific resource must be placed into a subdirectory of the bundle jar,
then use the <tt>assignment</tt> form, where the first path is the the
destination path (including file name if the resource is a file) and
the second path is the resource to copy. The <tt>inline</tt> form requires a ZIP or JAR file, which will be completely expanded in the bundle JAR.</p>

<p>If a resource clause is specified inside of "{ ... }" brackets, then
variable substitution will be performed on the resource, where
variables in the resources are denoted with "${ ... }" syntax.</p>

<p>By default the bundle plugin converts the project's Maven resource directories into a single <tt>&lt;Include-Resource&gt;</tt> instruction. If you specify your own <tt>&lt;Include-Resource&gt;</tt> instruction, this will replace the generated one. To include the generated list of Maven resources in your own <tt>&lt;Include-Resource&gt;</tt> instruction just add {<tt>maven-resources</tt>} to the list and it will be expanded automatically.</p>

<h3><a name="ApacheFelixMavenBundlePlugin(BND)-{{&lt;ImportPackage&gt;}}"></a><tt>&lt;Import-Package&gt;</tt></h3>

<p>The <tt>&lt;Import-Package&gt;</tt> instruction is a list of
packages that are required by the bundle's contained packages. The
default for this header is "*", resulting in importing all referred
packages. This header rarely has to be explicitly specified. However,
in certain cases when there is an unwanted import, such an import can
be removed by using a negation package pattern. The package patterns
work in the same way as for <tt>&lt;Export-Package&gt;</tt>, which means they are ordered. For example, if you wanted to import all packages except <tt>org.foo.impl</tt> you would specify "<tt>!org.foo.impl,*</tt>"</p>

<p><a name="ApacheFelixMavenBundlePlugin(BND)-defaultbehavior"></a></p>

<h2><a name="ApacheFelixMavenBundlePlugin(BND)-DefaultBehavior"></a>Default Behavior</h2>

<p>To use this plugin, very little information is required by BND. As
part of the Maven integration, the plugin tries to set reasonable
defaults for various instructions. For example:</p>

<ul>
	<li><tt>&lt;Bundle-SymbolicName&gt;</tt> is assumed to be "<tt>${groupId}.${artifactId</tt>}".</li>
	<li><tt>&lt;Export-Package&gt;</tt> is assumed to be "<tt>&lt;Bundle-SymbolicName&gt;.*</tt>", unless <tt>&lt;Private-Package&gt;</tt> is specified, then <tt>&lt;Export-Package&gt;</tt> is assumed to be empty.</li>
	<li><tt>&lt;Private-Package&gt;</tt> is assumed to be empty by default.</li>
	<li><tt>&lt;Import-Package&gt;</tt> is assumed to be "<tt>*</tt>", which imports everything referred to by the bundle content, but not contained in the bundle.</li>
	<li><tt>&lt;Include-Resource&gt;</tt> is generated from the project's Maven resources, typically "<tt>src/main/resources/</tt>",
which will copy the specified project directory hierarchy into the
resulting bundle JAR file, mirroring standard Maven behavior.</li>
	<li><tt>&lt;Bundle-Version&gt;</tt> is assumed to be "<tt>${pom.version</tt>}" with '-' character separator of the qualifier replaced with a '.' character.</li>
	<li><tt>&lt;Bundle-Name&gt;</tt> is assumed to be "<tt>${pom.name</tt>}".</li>
	<li><tt>&lt;Bundle-Description&gt;</tt> is assumed to be "<tt>${pom.description</tt>}".</li>
	<li><tt>&lt;Bundle-License&gt;</tt> is assumed to be "<tt>${pom.licenses</tt>}".</li>
	<li><tt>&lt;Bundle-Vendor&gt;</tt> is assumed to be "<tt>${pom.organization.name</tt>}".</li>
	<li><tt>&lt;Bundle-DocURL&gt;</tt> is assumed to be "<tt>${pom.organization.url</tt>}".</li>
</ul>


<p>Since the plugin creates bundles for OSGi R4, it hard-codes <tt>Bundle-ManifestVersion</tt>
to be '2'. Additionally, it generates imports for every export to
ensure package substitutability, which is very important when working
with collaborating services. It is possible to override any of these
values (except <tt>Bundle-ManifestVersion</tt>) just by specifying the desired value in the plugin configuration section of the POM file.</p>

<p><a name="ApacheFelixMavenBundlePlugin(BND)-howto"></a></p>

<h1><a name="ApacheFelixMavenBundlePlugin(BND)-Detailed&quot;HowTo&quot;"></a>Detailed "How To"</h1>

<h2><a name="ApacheFelixMavenBundlePlugin(BND)-GetMaven2"></a>Get Maven2</h2>

<p>The first step in the process of using the plugin is downloading and
installing the latest version of the Maven2 runtime. The latest Maven2
release and instuctions for getting started with Maven2 can be found at
the <span class="nobr"><a href="http://maven.apache.org/index.html" title="Visit page outside Confluence" rel="nofollow">Maven website<sup><img class="rendericon" src="apache-felix-maven-bundle-plugin-bnd_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span>.</p>

<h2><a name="ApacheFelixMavenBundlePlugin(BND)-UsingthePlugin"></a>Using the Plugin</h2>

<p>To use the maven-bundle-plugin, you first need to add the plugin and
some appropriate plugin configuration to your bundle project's POM.
Below is an example of a simple OSGi bundle POM for Maven2:</p>

<div class="preformatted"><div class="preformattedContent">
<pre>&lt;project&gt;
  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  &lt;groupId&gt;my-osgi-bundles&lt;/groupId&gt;
  &lt;artifactId&gt;examplebundle&lt;/artifactId&gt;
  &lt;packaging&gt;bundle&lt;/packaging&gt;    &lt;!-- (1) --&gt;
  &lt;version&gt;1.0&lt;/version&gt;
  &lt;name&gt;Example Bundle&lt;/name&gt;
  &lt;dependencies&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;org.apache.felix&lt;/groupId&gt;
      &lt;artifactId&gt;org.osgi.core&lt;/artifactId&gt;
      &lt;version&gt;1.0.0&lt;/version&gt;
    &lt;/dependency&gt;
  &lt;/dependencies&gt;
  &lt;build&gt;
    &lt;plugins&gt;
      &lt;plugin&gt;    &lt;!-- (2) START --&gt;
        &lt;groupId&gt;org.apache.felix&lt;/groupId&gt;
        &lt;artifactId&gt;maven-bundle-plugin&lt;/artifactId&gt;
        &lt;extensions&gt;true&lt;/extensions&gt;
        &lt;configuration&gt;
          &lt;instructions&gt;
            &lt;Export-Package&gt;com.my.company.api&lt;/Export-Package&gt;
            &lt;Private-Package&gt;com.my.company.*&lt;/Private-Package&gt;
            &lt;Bundle-Activator&gt;com.my.company.Activator&lt;/Bundle-Activator&gt;
          &lt;/instructions&gt;
        &lt;/configuration&gt;
      &lt;/plugin&gt;    &lt;!-- (2) END --&gt;
    &lt;/plugins&gt;
  &lt;/build&gt;
&lt;/project&gt;
</pre>
</div></div>

<p>There are two main things to note: (1) the <tt>&lt;packaging&gt;</tt>
specifier must be "bundle" and (2) the plugin and configuration must be
specified (the configuration section is where you will issue
instructions to the plugin).</p>

<h2><a name="ApacheFelixMavenBundlePlugin(BND)-RealWorldExample"></a>Real-World Example</h2>

<p>Consider this more real-world example using Felix' Log Service
implementation. The Log Service project is comprised of a single
package: <tt>org.apache.felix.log.impl</tt>. It has a dependency on
the core OSGi interfaces as well as a dependency on the compendium OSGi
interfaces for the specific log service interfaces. The following is
its POM file:</p>

<div class="preformatted"><div class="preformattedContent">
<pre>&lt;project&gt;
  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  &lt;groupId&gt;org.apache.felix&lt;/groupId&gt;
  &lt;artifactId&gt;org.apache.felix.log&lt;/artifactId&gt;
  &lt;packaging&gt;bundle&lt;/packaging&gt;
  &lt;name&gt;Apache Felix Log Service&lt;/name&gt;
  &lt;version&gt;0.8.0-SNAPSHOT&lt;/version&gt;
  &lt;description&gt;
    This bundle provides an implementation of the OSGi R4 Log service.
  &lt;/description&gt;
  &lt;dependencies&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;${pom.groupId}&lt;/groupId&gt;
      &lt;artifactId&gt;org.osgi.core&lt;/artifactId&gt;
      &lt;version&gt;0.8.0-incubator&lt;/version&gt;
    &lt;/dependency&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;${pom.groupId}&lt;/groupId&gt;
      &lt;artifactId&gt;org.osgi.compendium&lt;/artifactId&gt;
      &lt;version&gt;0.9.0-incubator-SNAPSHOT&lt;/version&gt;
    &lt;/dependency&gt;
  &lt;/dependencies&gt;
  &lt;build&gt;
    &lt;plugins&gt;
      &lt;plugin&gt;
        &lt;groupId&gt;org.apache.felix&lt;/groupId&gt;
        &lt;artifactId&gt;maven-bundle-plugin&lt;/artifactId&gt;
        &lt;extensions&gt;true&lt;/extensions&gt;
        &lt;configuration&gt;
          &lt;instructions&gt;
            &lt;Export-Package&gt;org.osgi.service.log&lt;/Export-Package&gt;
            &lt;Private-Package&gt;org.apache.felix.log.impl&lt;/Private-Package&gt;
            &lt;Bundle-SymbolicName&gt;${pom.artifactId}&lt;/Bundle-SymbolicName&gt;
            &lt;Bundle-Activator&gt;${pom.artifactId}.impl.Activator&lt;/Bundle-Activator&gt;
            &lt;Export-Service&gt;org.osgi.service.log.LogService,org.osgi.service.log.LogReaderService&lt;/Export-Service&gt;
          &lt;/instructions&gt;
        &lt;/configuration&gt;
      &lt;/plugin&gt;
    &lt;/plugins&gt;
  &lt;/build&gt;
&lt;/project&gt;
</pre>
</div></div>

<p>Notice that the <tt>&lt;Export-Package&gt;</tt> instruction
specifies that the bundle exports the Log Service package, even though
this package is not contained in the bundle project. By declaring this,
the plugin will copy the Log Service package into the resulting bundle
JAR file. This is useful in this case because now the bundle can
resolve without having to download the entire compendium bundle. The
resulting manifest for the Log Service bundle looks like this (notice
how the imports/exports automatically have version information
associated with them, which was obtained from packageinfo files in the
source packages):</p>

<div class="preformatted"><div class="preformattedContent">
<pre>Manifest-Version: 1
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
Bundle-Activator: org.apache.felix.log.impl.Activator
Import-Package: org.osgi.framework;version=1.3, org.osgi.service.log;v
 ersion=1.3
Include-Resource: src/main/resources
Export-Package: org.osgi.service.log;uses:=org.osgi.framework;version=
 1.3
Bundle-Version: 0.8.0.SNAPSHOT
Bundle-Name: Apache Felix Log Service
Bundle-Description: This bundle provides an implementation of the OSGi
  R4 Log service.
Private-Package: org.apache.felix.log.impl
Bundle-ManifestVersion: 2
Export-Service: org.osgi.service.log.LogService,org.osgi.service.log.L
 ogReaderService
Bundle-SymbolicName: org.apache.felix.log
</pre>
</div></div>

<p>The resulting bundle JAR file has the following content (notice how
the LICENSE and NOTICE files were automatically copied from the <tt>src/main/resources/</tt> directory of the project):</p>

<div class="preformatted"><div class="preformattedContent">
<pre>META-INF/MANIFEST.MF
LICENSE
META-INF/
META-INF/maven/
META-INF/maven/org.apache.felix/
META-INF/maven/org.apache.felix/org.apache.felix.log/
META-INF/maven/org.apache.felix/org.apache.felix.log/pom.properties
META-INF/maven/org.apache.felix/org.apache.felix.log/pom.xml
NOTICE
org/
org/apache/
org/apache/felix/
org/apache/felix/log/
org/apache/felix/log/impl/
org/apache/felix/log/impl/Activator.class
org/apache/felix/log/impl/Log.class
org/apache/felix/log/impl/LogEntryImpl.class
org/apache/felix/log/impl/LogException.class
org/apache/felix/log/impl/LogListenerThread.class
org/apache/felix/log/impl/LogNode.class
org/apache/felix/log/impl/LogNodeEnumeration.class
org/apache/felix/log/impl/LogReaderServiceFactory.class
org/apache/felix/log/impl/LogReaderServiceImpl.class
org/apache/felix/log/impl/LogServiceFactory.class
org/apache/felix/log/impl/LogServiceImpl.class
org/osgi/
org/osgi/service/
org/osgi/service/log/
org/osgi/service/log/LogEntry.class
org/osgi/service/log/LogListener.class
org/osgi/service/log/LogReaderService.class
org/osgi/service/log/LogService.class
org/osgi/service/log/package.html
org/osgi/service/log/packageinfo
</pre>
</div></div>

<h2><a name="ApacheFelixMavenBundlePlugin(BND)-AddingOSGimetadatatoexistingprojectswithoutchangingthepackagingtype"></a>Adding OSGi metadata to existing projects without changing the packaging type</h2>

<p>If you want to keep your project packaging type (for example "jar") but would like to add OSGi metadata<br>
you can use the manifest goal to generate a bundle manifest. The maven-jar-plugin can then be used to<br>
add this manifest to the final artifact. For example:</p>

<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;plugin&gt;</span>
  <span class="code-tag">&lt;artifactId&gt;</span>maven-jar-plugin<span class="code-tag">&lt;/artifactId&gt;</span>
  <span class="code-tag">&lt;configuration&gt;</span>
    <span class="code-tag">&lt;archive&gt;</span>  
      <span class="code-tag">&lt;manifestFile&gt;</span>${project.build.outputDirectory}/META-INF/MANIFEST.MF<span class="code-tag">&lt;/manifestFile&gt;</span>
    <span class="code-tag">&lt;/archive&gt;</span> 
  <span class="code-tag">&lt;/configuration&gt;</span>
<span class="code-tag">&lt;/plugin&gt;</span>  
<span class="code-tag">&lt;plugin&gt;</span>   
  <span class="code-tag">&lt;groupId&gt;</span>org.apache.felix<span class="code-tag">&lt;/groupId&gt;</span>
  <span class="code-tag">&lt;artifactId&gt;</span>maven-bundle-plugin<span class="code-tag">&lt;/artifactId&gt;</span>
  <span class="code-tag">&lt;executions&gt;</span>
    <span class="code-tag">&lt;execution&gt;</span>
      <span class="code-tag">&lt;id&gt;</span>bundle-manifest<span class="code-tag">&lt;/id&gt;</span>
      <span class="code-tag">&lt;phase&gt;</span>process-classes<span class="code-tag">&lt;/phase&gt;</span>
      <span class="code-tag">&lt;goals&gt;</span>    
        <span class="code-tag">&lt;goal&gt;</span>manifest<span class="code-tag">&lt;/goal&gt;</span>
      <span class="code-tag">&lt;/goals&gt;</span>   
    <span class="code-tag">&lt;/execution&gt;</span>
  <span class="code-tag">&lt;/executions&gt;</span>
<span class="code-tag">&lt;/plugin&gt;</span></pre>
</div></div>

<h2><a name="ApacheFelixMavenBundlePlugin(BND)-BuildingthePlugin"></a>Building the Plugin</h2>

<p>The plugin is hosted at the Apache Felix project. The following
steps describe how to build and install the plugin into your local
Maven2 repository.</p>

<p>Using the SVN client of your choice, checkout the maven-bundle-plugin project.</p>

<div class="preformatted"><div class="preformattedContent">
<pre>$ svn co http://svn.apache.org/repos/asf/felix/trunk/bundleplugin
</pre>
</div></div>

<p>Using Maven2, build and install the maven-bundle-plugin by issuing
the following Maven2 command in the project directory that was created
as a result of the previous step.</p>

<div class="preformatted"><div class="preformattedContent">
<pre>$ mvn install
</pre>
</div></div>

<h1><a name="ApacheFelixMavenBundlePlugin(BND)-Goals"></a>Goals</h1>

<p>The maven-bundle-plugin also provides additional functionality via
some Maven goals. Command-line execution of a goal is performed as
follows:</p>

<div class="preformatted"><div class="preformattedContent">
<pre>mvn org.apache.felix:maven-bundle-plugin:GOAL
</pre>
</div></div>

<p>Where GOAL is one of the following:</p>

<ul>
	<li><b><tt>bundle</tt></b> - build an OSGi bundle jar for the current project<br>
configuration options:
	<ul>
		<li><em><tt>manifestLocation</tt></em> defaults to ${project.build.outputDirectory}/META-INF</li>
		<li><em><tt>unpackBundle</tt></em> unpack bundle contents to output directory, defaults to false</li>
		<li><em><tt>excludeDependencies</tt></em> comma-separated list of dependency artifactIds to exclude from the classpath passed to Bnd (use "true" to exclude everything)</li>
		<li><em><tt>supportedProjectTypes</tt></em> defaults to "jar","bundle"</li>
		<li><em><tt>classifier</tt></em> attach bundle to the project using the given classifier</li>
	</ul>
	</li>
</ul>


<ul>
	<li><b><tt>bundleall</tt></b> - build OSGi bundle jars for all transitive dependencies<br>
configuration options:
	<ul>
		<li><em><tt>supportedProjectTypes</tt></em> defaults to "jar","bundle"</li>
	</ul>
	</li>
</ul>


<ul>
	<li><b><tt>wrap</tt></b> - as above, but limited to the first level of dependencies<br>
configuration options:
	<ul>
		<li><em><tt>supportedProjectTypes</tt></em> defaults to "jar","bundle"</li>
	</ul>
	</li>
</ul>


<ul>
	<li><b><tt>manifest</tt></b> - create an OSGi manifest for the current project<br>
configuration options:
	<ul>
		<li><em><tt>manifestLocation</tt></em> defaults to ${project.build.outputDirectory}/META-INF</li>
		<li><em><tt>supportedProjectTypes</tt></em> defaults to "jar","bundle"</li>
	</ul>
	</li>
</ul>


<ul>
	<li><b><tt>install</tt></b> - adds the current bundle project to the local OBR<br>
configuration options:
	<ul>
		<li><em><tt>obrRepository</tt></em> path to local OBR, defaults to <em>&lt;local-maven-repository&gt;</em><tt>/repository.xml</tt></li>
	</ul>
	</li>
</ul>


<p>More GOALs are available in the <b>1.4.0</b> release:</p>

<ul>
	<li><b><tt>ant</tt></b> - create an Ant build script to rebuild the bundle</li>
</ul>


<ul>
	<li><b><tt>install-file</tt></b> - adds a local bundle file to the local OBR<br>
configuration options:
	<ul>
		<li><em><tt>obrRepository</tt></em> path to local OBR, defaults to <em>&lt;local-maven-repository&gt;</em><tt>/repository.xml</tt></li>
		<li><em><tt>groupId</tt></em> Maven groupId for the bundle, taken from <em>pomFile</em> if given</li>
		<li><em><tt>artifactId</tt></em> Maven artifactId for the bundle, taken from <em>pomFile</em> if given</li>
		<li><em><tt>version</tt></em> Maven version for the bundle, taken from <em>pomFile</em> if given</li>
		<li><em><tt>packaging</tt></em> Maven packaging type for the bundle, taken from <em>pomFile</em> if given</li>
		<li><em><tt>classifier</tt></em> Maven classifier type, defaults to none</li>
		<li><em><tt>pomFile</tt></em> optional Pom file describing the bundle</li>
		<li><em><tt>file</tt></em> bundle file, defaults to the bundle from the local Maven repository</li>
		<li><em><tt>obrXml</tt></em> optional additional properties for the bundle</li>
	</ul>
	</li>
</ul>


<ul>
	<li><b><tt>deploy</tt></b> - adds the current bundle project to a remote OBR<br>
configuration options:
	<ul>
		<li><em><tt>remoteOBR</tt></em> name of remote OBR, defaults to NONE (which means no remote OBR deployment)</li>
		<li><em><tt>obrRepository</tt></em> used when the remoteOBR name is blank, defaults to <tt>repository.xml</tt></li>
		<li><em><tt>altDeploymentRepository</tt></em> alternative remote repository, <em>id::layout::url</em></li>
		<li><em><tt>ignoreLock</tt></em> ignore remote locking when updating the OBR</li>
	</ul>
	</li>
</ul>


<ul>
	<li><b><tt>deploy-file</tt></b> - adds a local bundle file to a remote OBR<br>
configuration options:
	<ul>
		<li><em><tt>remoteOBR</tt></em> name of remote OBR, defaults to an empty string</li>
		<li><em><tt>obrRepository</tt></em> used when the remoteOBR name is blank, defaults to <tt>repository.xml</tt></li>
		<li><em><tt>repositoryId</tt></em> optional repository id, used to lookup authentication settings</li>
		<li><em><tt>url</tt></em> remote repository transport URL, like
<div class="preformatted"><div class="preformattedContent">
<pre>scpexe://host/path/to/obr
</pre>
</div></div></li>
		<li><em><tt>bundleUrl</tt></em> public URL of deployed bundle, like
<div class="preformatted"><div class="preformattedContent">
<pre>http://www.foo.org/bundles/foo.jar
</pre>
</div></div></li>
		<li><em><tt>groupId</tt></em> Maven groupId for the bundle, taken from <em>pomFile</em> if given</li>
		<li><em><tt>artifactId</tt></em> Maven artifactId for the bundle, taken from <em>pomFile</em> if given</li>
		<li><em><tt>version</tt></em> Maven version for the bundle, taken from <em>pomFile</em> if given</li>
		<li><em><tt>packaging</tt></em> Maven packaging type for the bundle, taken from <em>pomFile</em> if given</li>
		<li><em><tt>classifier</tt></em> Maven classifier type, defaults to none</li>
		<li><em><tt>pomFile</tt></em> optional Pom file describing the bundle</li>
		<li><em><tt>file</tt></em> bundle file, defaults to the bundle from the local Maven repository</li>
		<li><em><tt>obrXml</tt></em> optional additional properties for the bundle</li>
		<li><em><tt>ignoreLock</tt></em> ignore remote locking when updating the OBR</li>
	</ul>
	</li>
</ul>


<ul>
	<li><b><tt>clean</tt></b> - cleans the local OBR, removing missing bundles<br>
configuration options:
	<ul>
		<li><em><tt>obrRepository</tt></em> path to local OBR, defaults to <em>&lt;local-maven-repository&gt;</em><tt>/repository.xml</tt></li>
	</ul>
	</li>
</ul>


<p>There are also new instructions available from the underlying BND
tool, which continues to be improved independently; for the latest see <span class="nobr"><a href="http://aqute.biz/Code/Bnd" title="Visit page outside Confluence" rel="nofollow">BND documentation<sup><img class="rendericon" src="apache-felix-maven-bundle-plugin-bnd_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span>.</p>

<p>The default goal <b><tt>bundle</tt></b> will be initialized by setting the &lt;packaging&gt; entry to "bundle".</p>

<h1><a name="ApacheFelixMavenBundlePlugin(BND)-Thefollowingfeaturesareonlyavailablefromversion1.2.0onwards"></a>The following features are only available from version 1.2.0 onwards</h1>

<h2><a name="ApacheFelixMavenBundlePlugin(BND)-Embeddingdependencies"></a>Embedding dependencies</h2>

<p>The Maven Bundle Plugin supports embedding of selected project dependencies inside the bundle by using the <tt>&lt;Embed-Dependency&gt;</tt> instruction:</p>

<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;Embed-Dependency&gt;</span>dependencies<span class="code-tag">&lt;/Embed-Dependency&gt;</span></pre>
</div></div>

<p>where:</p>

<div class="preformatted"><div class="preformattedContent">
<pre>dependencies ::= clause ( ',' clause ) *
clause ::= MATCH ( ';' attr '=' MATCH | ';inline=true' )
attr ::= 'groupId' | 'artifactId' | 'version' | 'scope' | 'type' | 'classifier'
MATCH ::= &lt;globbed regular expressions&gt;
</pre>
</div></div>

<p>The plugin uses the <tt>&lt;Embed-Dependency&gt;</tt> instruction to transform the project dependencies into <tt>&lt;Include-Resource&gt;</tt> and <tt>&lt;Bundle-ClassPath&gt;</tt>
clauses, which are then appended to the current set of instructions and
passed onto BND. If you want the embedded dependencies to be at the
start or middle of <tt>&lt;Include-Resource&gt;</tt> or <tt>&lt;Bundle-ClassPath&gt;</tt> then you can use {<tt>maven-dependencies</tt>}, which will automatically expand to the relevant clauses.</p>

<p>The MATCH section accepts alternatives, separated by <b>|</b>, and can be negated by using <b>!</b> at the <em>beginning</em> of the MATCH. Use <b>*</b> to represent zero or more unknown characters and <b>?</b> to represent a single unknown character. There is no need to escape the <b>.</b> character inside MATCH. The first MATCH in a clause will filter against the artifactId.</p>

<p>some examples:</p>

<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-tag"><span class="code-comment">&lt;!-- embed all compile and runtime scope dependencies --&gt;</span></span>
<span class="code-tag">&lt;Embed-Dependency&gt;</span>*;scope=compile|runtime<span class="code-tag">&lt;/Embed-Dependency&gt;</span>

<span class="code-tag"><span class="code-comment">&lt;!-- embed any dependencies with artifactId junit and scope test --&gt;</span></span>
<span class="code-tag">&lt;Embed-Dependency&gt;</span>junit;scope=test<span class="code-tag">&lt;/Embed-Dependency&gt;</span>

<span class="code-tag"><span class="code-comment">&lt;!-- inline all dependencies, except those with scope test --&gt;</span></span>
<span class="code-tag">&lt;Embed-Dependency&gt;</span>*;scope=!test;inline=true<span class="code-tag">&lt;/Embed-Dependency&gt;</span>

<span class="code-tag"><span class="code-comment">&lt;!-- embed all compile and runtime scope dependencies, except those with artifactIds in the given list --&gt;</span></span>
<span class="code-tag">&lt;Embed-Dependency&gt;</span>*;scope=compile|runtime;inline=false;artifactId=!cli|lang|runtime|tidy|jsch<span class="code-tag">&lt;/Embed-Dependency&gt;</span></pre>
</div></div>

<p>examples of using {<tt>maven-dependencies</tt>}:</p>

<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;Include-Resource&gt;</span>
  {maven-resources}, {maven-dependencies},
  org/foo/Example.class=target/classes/org/foo/Example.class
<span class="code-tag">&lt;/Include-Resource&gt;</span>

<span class="code-tag">&lt;Bundle-ClassPath&gt;</span>.,{maven-dependencies},some.jar<span class="code-tag">&lt;/Bundle-ClassPath&gt;</span></pre>
</div></div>

<p>By default matched dependencies are embedded in the bundle as <tt>artifactId-version.jar</tt>. This behaviour can be modified using the following instructions:</p>

<ul>
	<li><tt>&lt;Embed-StripVersion&gt;true&lt;/Embed-StripVersion&gt;</tt> - removes the version from the file (ie. <em>artifactId.jar</em>)</li>
	<li><tt>&lt;Embed-StripGroup&gt;false&lt;/Embed-StripGroup&gt;</tt> - adds the groupId as a subdirectory (ie. <em>groupId/artifactId-version.jar</em>)</li>
	<li><tt>&lt;Embed-Directory&gt;directory&lt;/Embed-Directory&gt;</tt> - adds a subdirectory (ie. <em>directory/artifactId-version.jar</em>)</li>
</ul>


<p>Normally the plugin only checks direct dependencies, but this can be
changed to include the complete set of transitive dependencies with the
following option:</p>

<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;Embed-Transitive&gt;</span>true<span class="code-tag">&lt;/Embed-Transitive&gt;</span></pre>
</div></div>

<p>If you want a dependency inlined instead of embedded add the <tt>inline=true</tt>. For example to inline all <em>compile</em> and <em>runtime</em> scoped dependencies use:</p>

<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;Embed-Dependency&gt;</span>*;scope=compile|runtime;inline=true<span class="code-tag">&lt;/Embed-Dependency&gt;</span></pre>
</div></div>

<h3><a name="ApacheFelixMavenBundlePlugin(BND)-EmbedDependencyandExportPackage"></a>Embed-Dependency and Export-Package</h3>

<p>If you embed a dependency with <tt>&lt;Embed-Dependency&gt;</tt>, and your <tt>&lt;Export-Package&gt;</tt> or <tt>&lt;Private-Package&gt;</tt> instructions match packages inside the embedded jar, you will see some duplication inside the bundle. This is because the <tt>&lt;Export-Package&gt;</tt> and <tt>&lt;Private-Package&gt;</tt>
instructions will result in classes being inlined in the bundle, even
though they also exist inside the embedded jar. If you want to export
packages from an embedded dependency without such duplication then you
can either inline the dependency, or use a new BND instruction called <tt>&lt;_exportcontents&gt;</tt>.</p>

<p><tt>&lt;_exportcontents&gt;</tt> behaves just like Export-Package, except it doesn't change the content of the bundle, just what content should be exported.</p>

<h2><a name="ApacheFelixMavenBundlePlugin(BND)-OBRintegration"></a>OBR integration</h2>

<p>The latest Maven Bundle Plugin automatically updates the local OBR
repository.xml file during the install phase, using a default location
of:</p>

<div class="code"><div class="codeContent">
<pre class="code-java">&lt;LOCAL-MAVEN-REPOSITORY&gt;/repository.xml</pre>
</div></div>

<p>You can configure the location of the OBR repository by using the command line:</p>

<div class="code"><div class="codeContent">
<pre class="code-java">mvn clean install -DobrRepository=&lt;PATH_TO_OBR&gt;</pre>
</div></div>

<p>or in the configuration section for the maven-bundle-plugin in your Maven POM:</p>

<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;groupId&gt;</span>org.apache.felix<span class="code-tag">&lt;/groupId&gt;</span>
<span class="code-tag">&lt;artifactId&gt;</span>maven-bundle-plugin<span class="code-tag">&lt;/artifactId&gt;</span>
<span class="code-tag">&lt;extensions&gt;</span>true<span class="code-tag">&lt;/extensions&gt;</span>
<span class="code-tag">&lt;configuration&gt;</span>
  <span class="code-tag">&lt;obrRepository&gt;</span>PATH_TO_OBR<span class="code-tag">&lt;/obrRepository&gt;</span>
  <span class="code-tag">&lt;instructions&gt;</span>
    <span class="code-tag"><span class="code-comment">&lt;!-- bnd instructions --&gt;</span></span>
  <span class="code-tag">&lt;/instructions&gt;</span>
<span class="code-tag">&lt;/configuration&gt;</span></pre>
</div></div>

<p>to disable OBR installation set the obrRepository to NONE, for example:</p>

<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;groupId&gt;</span>org.apache.felix<span class="code-tag">&lt;/groupId&gt;</span>
<span class="code-tag">&lt;artifactId&gt;</span>maven-bundle-plugin<span class="code-tag">&lt;/artifactId&gt;</span>
<span class="code-tag">&lt;extensions&gt;</span>true<span class="code-tag">&lt;/extensions&gt;</span>
<span class="code-tag">&lt;configuration&gt;</span>
  <span class="code-tag">&lt;obrRepository&gt;</span>NONE<span class="code-tag">&lt;/obrRepository&gt;</span>
  <span class="code-tag">&lt;instructions&gt;</span>
    <span class="code-tag"><span class="code-comment">&lt;!-- bnd instructions --&gt;</span></span>
  <span class="code-tag">&lt;/instructions&gt;</span>
<span class="code-tag">&lt;/configuration&gt;</span></pre>
</div></div>

<h2><a name="ApacheFelixMavenBundlePlugin(BND)-Eclipse/PDEintegration"></a>Eclipse/PDE integration</h2>

<p>It is possible to configure the Maven Bundle Plugin to put the
bundle manifest where Eclipse/PDE expects it, and use the Maven
Dependency Plugin to arrange for any embedded dependencies to appear in
a local directory that matches the Bundle-ClassPath entries. Here is an
example POM that does this:</p>

<div class="preformatted"><div class="preformattedContent">
<pre>&lt;project&gt;

  &lt;properties&gt;
    &lt;bundle.symbolicName&gt;org.example&lt;/bundle.symbolicName&gt;
    &lt;bundle.namespace&gt;org.example&lt;/bundle.namespace&gt;
  &lt;/properties&gt;

  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  &lt;groupId&gt;examples&lt;/groupId&gt;
  &lt;artifactId&gt;org.example&lt;/artifactId&gt;
  &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;

  &lt;name&gt;${bundle.symbolicName} [${bundle.namespace}]&lt;/name&gt;

  &lt;packaging&gt;bundle&lt;/packaging&gt;

  &lt;build&gt;
    &lt;resources&gt;
      &lt;resource&gt;
        &lt;directory&gt;src/main/resources&lt;/directory&gt;
      &lt;/resource&gt;
      &lt;resource&gt;
        &lt;directory&gt;.&lt;/directory&gt;
        &lt;includes&gt;
          &lt;include&gt;plugin.xml&lt;/include&gt;
        &lt;/includes&gt;
      &lt;/resource&gt;
    &lt;/resources&gt;
    &lt;plugins&gt;
      &lt;plugin&gt;
        &lt;groupId&gt;org.apache.felix&lt;/groupId&gt;
        &lt;artifactId&gt;maven-bundle-plugin&lt;/artifactId&gt;
        &lt;version&gt;1.2.1&lt;/version&gt;
        &lt;extensions&gt;true&lt;/extensions&gt;
        &lt;!--
          the following instructions build a simple set of public/private classes into an OSGi bundle
        --&gt;
        &lt;configuration&gt;
          &lt;manifestLocation&gt;META-INF&lt;/manifestLocation&gt;
          &lt;instructions&gt;
            &lt;Bundle-SymbolicName&gt;${bundle.symbolicName}&lt;/Bundle-SymbolicName&gt;
            &lt;Bundle-Version&gt;${pom.version}&lt;/Bundle-Version&gt;
            &lt;!--
              assume public classes are in the top package, and private classes are under ".internal"
            --&gt;
            &lt;Export-Package&gt;!${bundle.namespace}.internal.*,${bundle.namespace}.*;version="${pom.version}"&lt;/Export-Package&gt;
            &lt;Private-Package&gt;${bundle.namespace}.internal.*&lt;/Private-Package&gt;
            &lt;Bundle-Activator&gt;${bundle.namespace}.internal.ExampleActivator&lt;/Bundle-Activator&gt;
            &lt;!--
              embed compile/runtime dependencies using path that matches the copied dependency folder
            --&gt;
            &lt;Embed-Dependency&gt;*;scope=compile|runtime;inline=false&lt;/Embed-Dependency&gt;
            &lt;Embed-Directory&gt;target/dependency&lt;/Embed-Directory&gt;
            &lt;Embed-StripGroup&gt;true&lt;/Embed-StripGroup&gt;
          &lt;/instructions&gt;
        &lt;/configuration&gt;
      &lt;/plugin&gt;
      &lt;plugin&gt;
        &lt;artifactId&gt;maven-dependency-plugin&lt;/artifactId&gt;
        &lt;executions&gt;
          &lt;execution&gt;
            &lt;id&gt;copy-dependencies&lt;/id&gt;
            &lt;phase&gt;package&lt;/phase&gt;
            &lt;goals&gt;
              &lt;goal&gt;copy-dependencies&lt;/goal&gt;
            &lt;/goals&gt;
          &lt;/execution&gt;
        &lt;/executions&gt;
      &lt;/plugin&gt;
    &lt;/plugins&gt;
  &lt;/build&gt;

  &lt;dependencies&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;org.osgi&lt;/groupId&gt;
      &lt;artifactId&gt;osgi_R4_core&lt;/artifactId&gt;
      &lt;version&gt;1.0&lt;/version&gt;
      &lt;scope&gt;provided&lt;/scope&gt;
      &lt;optional&gt;true&lt;/optional&gt;
    &lt;/dependency&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;org.osgi&lt;/groupId&gt;
      &lt;artifactId&gt;osgi_R4_compendium&lt;/artifactId&gt;
      &lt;version&gt;1.0&lt;/version&gt;
      &lt;scope&gt;provided&lt;/scope&gt;
      &lt;optional&gt;true&lt;/optional&gt;
    &lt;/dependency&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;junit&lt;/groupId&gt;
      &lt;artifactId&gt;junit&lt;/artifactId&gt;
      &lt;version&gt;3.8.1&lt;/version&gt;
      &lt;scope&gt;compile&lt;/scope&gt;
      &lt;optional&gt;true&lt;/optional&gt;
    &lt;/dependency&gt;
  &lt;/dependencies&gt;

&lt;/project&gt;
</pre>
</div></div>

<p>To generate the Eclipse metadata use:</p>

<div class="code"><div class="codeContent">
<pre class="code-java">mvn clean <span class="code-keyword">package</span> eclipse:eclipse -Declipse.pde install</pre>
</div></div>

<p>and you should now be able to import this as an existing Eclipse project.</p>

<p>FYI: the above POM was generated using the <tt>pax-create-bundle</tt> command from <span class="nobr"><a href="http://www.ops4j.org/projects/pax/construct/index.html" title="Visit page outside Confluence" rel="nofollow">Pax-Construct<sup><img class="rendericon" src="apache-felix-maven-bundle-plugin-bnd_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span> and then tweaked to demonstrate using the Maven Dependency Plugin to handle embedded jars in Eclipse.</p>

<p>With the original Pax-Construct generated POM you would simply use:</p>

<div class="code"><div class="codeContent">
<pre class="code-java">mvn clean <span class="code-keyword">package</span> pax:eclipse</pre>
</div></div>

<p>to create the appropriate Eclipse files and manifest, and also
handle any embedded entries. The pax:eclipse goal extends
eclipse:eclipse, and supports the same parameters.</p>

<h2><a name="ApacheFelixMavenBundlePlugin(BND)-Unpackingbundlecontentsto'target/classes'"></a>Unpacking bundle contents to 'target/classes'</h2>

<p>Once in a while you may create a bundle which contains additional classes to the ones compiled from <tt>src/main/java</tt>,
for example when you embed the classes from another jar. This can
sometimes cause unforeseen problems in Maven, as it will use the output
directory (<tt>target/classes</tt>) rather than the final bundle, when compiling against projects in the same reactor (ie. the same build).</p>

<p>The easiest way to get around this Maven 'feature' is to unpack the
contents of the bundle to the output directory after the packaging
step, so the additional classes will be found where Maven expects them.
Thankfully there is now an easy option to do this in the bundle-plugin:</p>

<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;groupId&gt;</span>org.apache.felix<span class="code-tag">&lt;/groupId&gt;</span>
<span class="code-tag">&lt;artifactId&gt;</span>maven-bundle-plugin<span class="code-tag">&lt;/artifactId&gt;</span>
<span class="code-tag">&lt;extensions&gt;</span>true<span class="code-tag">&lt;/extensions&gt;</span>
<span class="code-tag">&lt;configuration&gt;</span>
  <span class="code-tag">&lt;unpackBundle&gt;</span>true<span class="code-tag">&lt;/unpackBundle&gt;</span>
  <span class="code-tag">&lt;instructions&gt;</span>
    <span class="code-tag"><span class="code-comment">&lt;!-- bnd instructions --&gt;</span></span>
  <span class="code-tag">&lt;/instructions&gt;</span>
<span class="code-tag">&lt;/configuration&gt;</span></pre>
</div></div>

<h2><a name="ApacheFelixMavenBundlePlugin(BND)-UsinganexistingMANIFEST.MFfile"></a>Using an existing MANIFEST.MF file</h2>

<p>If you have an existing manifest, you can add this to the Bnd instructions, like so:</p>

<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;_include&gt;</span>src/main/resources/META-INF/MANIFEST.MF<span class="code-tag">&lt;/_include&gt;</span>
<span class="code-tag">&lt;Export-Package&gt;</span>org.example.*<span class="code-tag">&lt;/Export-Package&gt;</span></pre>
</div></div>

<p>Bnd will use it when calculating the bundle contents, and will also
copy across all manifest attributes starting with a capital letter.<br>
As shown in the above example, you could use this to include a non-OSGi
manifest which you then customize with extra OSGi attributes.</p>

<h1><a name="ApacheFelixMavenBundlePlugin(BND)-Thefollowingfeaturesareonlyavailablefromversion1.4.0onwards"></a>The following features are only available from version 1.4.0 onwards</h1>

<h2><a name="ApacheFelixMavenBundlePlugin(BND)-bundle:ant"></a>bundle:ant</h2>

<p>The <b>ant</b> goal creates a customized <tt>build.xml</tt> Ant script along with a collection of BND instructions and properties, taken from the current project and stored in <tt>maven-build.bnd</tt>. You also need to run <b><tt>ant:ant</tt></b> to create the standard Ant support tasks to download Maven dependencies and perform compilation, etc.</p>

<p>The customized Ant script uses the BND tool to rebuild the bundle,
so any source changes should be reflected in the (re)generated manifest.</p>

<p>Example:</p>
<div class="preformatted"><div class="preformattedContent">
<pre>mvn ant:ant bundle:ant

ant clean package
</pre>
</div></div>

<h2><a name="ApacheFelixMavenBundlePlugin(BND)-bundle:installfile"></a>bundle:install-file</h2>

<p>The <b>install-file</b> goal updates the local OBR with the details of a bundle from the local filesystem.</p>

<p>configuration:</p>
<ul>
	<li><em>obrRepository</em> path to local OBR, defaults to <em>&lt;local-maven-repository&gt;</em><tt>/repository.xml</tt></li>
	<li><em>groupId</em> Maven groupId for the bundle, taken from <em>pomFile</em> if given</li>
	<li><em>artifactId</em> Maven artifactId for the bundle, taken from <em>pomFile</em> if given</li>
	<li><em>version</em> Maven version for the bundle, taken from <em>pomFile</em> if given</li>
	<li><em>packaging</em> Maven packaging type for the bundle, taken from <em>pomFile</em> if given</li>
	<li><em>classifier</em> Maven classifier type, defaults to none</li>
	<li><em>pomFile</em> optional Pom file describing the bundle</li>
	<li><em>file</em> bundle file, defaults to the bundle from the local Maven repository</li>
	<li><em>obrXml</em> optional additional properties for the bundle</li>
</ul>


<p>Example:</p>
<div class="preformatted"><div class="preformattedContent">
<pre>mvn org.apache.felix:maven-bundle-plugin:1.4.0:install-file \
  -DpomFile=myPom.xml -Dfile=foo-1.0.jar
</pre>
</div></div>

<h2><a name="ApacheFelixMavenBundlePlugin(BND)-bundle:deploy"></a>bundle:deploy</h2>

<p>The <b>deploy goal</b> updates the remote OBR with the details of
the deployed bundle from the local Maven repository. The remote OBR is
found by querying the <tt>&lt;distributionManagement&gt;</tt> section of the project, unless <tt>-DaltDeploymentRepository</tt> is set. See <span class="nobr"><a href="http://maven.apache.org/plugins/maven-deploy-plugin/deploy-mojo.html" title="Visit page outside Confluence" rel="nofollow">http://maven.apache.org/plugins/maven-deploy-plugin/deploy-mojo.html<sup><img class="rendericon" src="apache-felix-maven-bundle-plugin-bnd_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span> for more details about these particular settings.</p>

<p>(If the project has an <tt>obr.xml</tt> file somewhere in its resources, then it will be automatically detected and applied.)</p>

<p>configuration:</p>
<ul>
	<li><em>remoteOBR</em> name of remote OBR, defaults to NONE (which means no remote OBR deployment)</li>
	<li><em>obrRepository</em> used when the remoteOBR name is blank, defaults to <tt>repository.xml</tt></li>
	<li><em>altDeploymentRepository</em> alternative remote repository, <em>id::layout::url</em></li>
	<li><em>ignoreLock</em> ignore remote locking when updating the OBR</li>
</ul>


<p>This goal is part of the "bundle" packaging lifecycle, but is disabled by default - to enable just set the <tt>remoteOBR</tt> parameter.</p>

<h2><a name="ApacheFelixMavenBundlePlugin(BND)-bundle:deployfile"></a>bundle:deploy-file</h2>

<p>The <b>deploy-file</b> goal updates the remote OBR with the details of a deployed bundle from the local filesystem. The remote OBR is found using the <tt>-DrepositoryId</tt> and <tt>-Durl</tt> parameters. See <span class="nobr"><a href="http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html" title="Visit page outside Confluence" rel="nofollow">http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html<sup><img class="rendericon" src="apache-felix-maven-bundle-plugin-bnd_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span> for more details about these particular settings.</p>

<p>You can use the <tt>-DbundleUrl</tt> parameter to give the public location of the deployed bundle, which may differ from the remote OBR location.</p>

<p>configuration:</p>
<ul>
	<li><em>remoteOBR</em> name of remote OBR, defaults to an empty string</li>
	<li><em>obrRepository</em> used when the remoteOBR name is blank, defaults to <tt>repository.xml</tt></li>
	<li><em>repositoryId</em> optional repository id, used to lookup authentication settings</li>
	<li><em>url</em> remote repository transport URL, like
<div class="preformatted"><div class="preformattedContent">
<pre>scpexe://host/path/to/obr
</pre>
</div></div></li>
	<li><em>bundleUrl</em> public URL of deployed bundle, like
<div class="preformatted"><div class="preformattedContent">
<pre>http://www.foo.org/bundles/foo.jar
</pre>
</div></div></li>
	<li><em>groupId</em> Maven groupId for the bundle, taken from <em>pomFile</em> if given</li>
	<li><em>artifactId</em> Maven artifactId for the bundle, taken from <em>pomFile</em> if given</li>
	<li><em>version</em> Maven version for the bundle, taken from <em>pomFile</em> if given</li>
	<li><em>packaging</em> Maven packaging type for the bundle, taken from <em>pomFile</em> if given</li>
	<li><em>classifier</em> Maven classifier type, defaults to none</li>
	<li><em>pomFile</em> optional Pom file describing the bundle</li>
	<li><em>file</em> bundle file, defaults to the bundle from the local Maven repository</li>
	<li><em>obrXml</em> optional additional properties for the bundle</li>
	<li><em>ignoreLock</em> ignore remote locking when updating the OBR</li>
</ul>


<p>Example:</p>
<div class="preformatted"><div class="preformattedContent">
<pre>mvn org.apache.felix:maven-bundle-plugin:1.4.0:deploy-file \
  -DpomFile=myPom.xml -Dfile=foo-1.0.jar -Durl=file:/tmp/example/OBR \
  -DbundleUrl=http://www.foo.org/bundles/foo.jar
</pre>
</div></div>

<h2><a name="ApacheFelixMavenBundlePlugin(BND)-bundle:clean"></a>bundle:clean</h2>

<p>Sometimes you would like to clean your local OBR because it contains
bundles that are no longer in your local Maven repository. This case
often occurs when artifacts were deleted manually. The
maven-bundle-plugin provides a simple goal to check for missing
bundles, and remove them from the local OBR.</p>

<p>configuration:</p>
<ul>
	<li><em>obrRepository</em> path to local OBR, defaults to <em>&lt;local-maven-repository&gt;</em><tt>/repository.xml</tt></li>
</ul>


<p>Example:</p>
<div class="preformatted"><div class="preformattedContent">
<pre>mvn bundle:clean
</pre>
</div></div>

<h2><a name="ApacheFelixMavenBundlePlugin(BND)-Concurrentupdates"></a>Concurrent updates</h2>

<p>With a remote OBR, several uploads may occur at the same time.
However, the remote OBR is centralized in one file, so concurrent
modification must be avoided. To achieve this, the plug-in implements a
locking system. Each time the plug-in tries to modify the file it sets
a file based lock. If it can't take the lock, it will wait and retry.
After 3 attempts the upload process fails. To bypass this lock add <tt>-DignoreLock</tt> to the command-line (or add <tt>&lt;ignoreLock&gt;true&lt;ignoreLock&gt;</tt> to the configuration section of your Pom).</p>

<h2><a name="ApacheFelixMavenBundlePlugin(BND)-FTPprotocol"></a>FTP protocol</h2>

<p>Not all protocols are supported by Maven out of the box. For example the ftp protocol requires the <b>wagon-ftp</b> component. To enable the ftp protocol add this to your Pom:</p>
<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;build&gt;</span>
  <span class="code-tag">&lt;extensions&gt;</span>
    <span class="code-tag">&lt;extension&gt;</span>
      <span class="code-tag">&lt;groupId&gt;</span>org.apache.maven.wagon<span class="code-tag">&lt;/groupId&gt;</span>
      <span class="code-tag">&lt;artifactId&gt;</span>wagon-ftp<span class="code-tag">&lt;/artifactId&gt;</span>
      <span class="code-tag">&lt;version&gt;</span>1.0-alpha-6<span class="code-tag">&lt;/version&gt;</span>
    <span class="code-tag">&lt;/extension&gt;</span>
  <span class="code-tag">&lt;/extensions&gt;</span>
<span class="code-tag">&lt;/build&gt;</span></pre>
</div></div>

<h2><a name="ApacheFelixMavenBundlePlugin(BND)-Howtheplugincomputesthedescriptionofthebundle"></a>How the plug-in computes the description of the bundle</h2>

<p>The description of the bundle comes from three different sources:</p>
<ul>
	<li>Bindex : Bindex is a tool that analyzes a bundle manifest to generate OBR description</li>
	<li>pom.xml : by analyzing the pom file, various information is collected (symbolic name ...)</li>
	<li>obr.xml : this file contains customized description and capabilities for the bundle</li>
</ul>


<p>These sources are merged together using the following precedence:</p>
<div class="preformatted"><div class="preformattedContent">
<pre>Bindex
| (overrides)
pom.xml
| (overrides)
obr.xml
</pre>
</div></div>
<p>A warning message is displayed when existing information is overridden.</p>

<h2><a name="ApacheFelixMavenBundlePlugin(BND)-Knownissues&amp;limitations"></a>Known issues &amp; limitations</h2>

<ol>
	<li>obr.xml (file given by the user to add properties not found
by Bindex) must be correct, because the plug-in does not check its
syntax.</li>
</ol>


<h1><a name="ApacheFelixMavenBundlePlugin(BND)-Feedback"></a>Feedback</h1>

<p>Subscribe to the Felix users mailing list by sending a message to <span class="nobr"><a href="mailto:users-subscribe@felix.apache.org" title="Send mail to users-subscribe@felix.apache.org" rel="nofollow">users-subscribe@felix.apache.org<sup><img class="rendericon" src="apache-felix-maven-bundle-plugin-bnd_files/mail_small.gif" alt="" align="absmiddle" border="0" height="12" width="13"></sup></a></span>; after subscribing, email questions or feedback to <span class="nobr"><a href="mailto:users@felix.apache.org" title="Send mail to users@felix.apache.org" rel="nofollow">users@felix.apache.org<sup><img class="rendericon" src="apache-felix-maven-bundle-plugin-bnd_files/mail_small.gif" alt="" align="absmiddle" border="0" height="12" width="13"></sup></a></span>.</p>
    </div>
  
</body></html>