Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Commons Wiki" for 
change notification.

The following page has been changed by NiallPemberton:
http://wiki.apache.org/commons/CommonsOsgi

------------------------------------------------------------------------------
  See [http://commons.markmail.org/message/kdnjlbokvuiigcew this thread] and
  [http://wiki.ops4j.org/dokuwiki/doku.php?id=pax:logging Pax-logging]
  
+ == Configuring OSGi with Maven2 ==
+ There are two ways to do this:
+  * ''Bundle Plugin'' - using the Apache Felix project's bundle Plugin
+  * ''Manually'' - configuring the {{{maven-jar-plugin}}} with OSGi manifest 
entries
+ 
+ === Felix's Maven2 Bundle Plugin ===
+ To configure the plugin, specify a {{{ <packaging>bundle</packaging> }}} 
element in the pom
+ and configure the plugin in the {{{ <build> }}} section, for example for 
Commons Lang
+ {{{
+       <plugin>
+         <groupId>org.apache.felix</groupId>
+         <artifactId>maven-bundle-plugin</artifactId>
+         <version>1.1.0-SNAPSHOT</version>
+         <extensions>true</extensions>
+         <configuration>
+           <excludeDependencies>true</excludeDependencies>
+           <instructions>
+             <Bundle-SymbolicName>org.apache.commons.lang</Bundle-SymbolicName>
+             <Export-Package>*;version=${pom.version}</Export-Package>
+           </instructions>
+         </configuration>
+       </plugin>
+ }}}
+ 
+ '''Notes:'''
+  * {{{<extensions>true</extensions>}}} needs to be specified otherwise the 
{{{ <packaging>bundle</packaging> }}} is not recognized and causes an error 
with the message ''Cannot find lifecycle mapping for packaging '''bundle'''''
+  * {{{<excludeDependencies>true</excludeDependencies>}}} prevents all the 
component's dependencies classes being included in the jar
+  * Other '''''Manifest''''' entries are inherited from the commons-parent pom
+ 
+ === Configuring via the jar plugin ===
+ 
+ {{{
+       <plugin>
+         <artifactId>maven-jar-plugin</artifactId>
+         <configuration>
+           <archive>
+             <manifestEntries>
+               
<Bundle-SymbolicName>org.apache.commons.lang</Bundle-SymbolicName>
+               
<Bundle-License>http://www.apache.org/licenses/LICENSE-2.0.txt</Bundle-License>
+               <Bundle-ManifestVersion>2</Bundle-ManifestVersion>
+               <Bundle-Name>Apache Commons Lang Bundle</Bundle-Name>
+               <Bundle-Vendor>${project.organization.name}</Bundle-Vendor>
+               <Bundle-Version>${project.version}</Bundle-Version>
+               <Export-Package>
+ org.apache.commons.lang;version=${project.version},
+ org.apache.commons.lang.builder;version=${project.version},
+ org.apache.commons.lang.enum;version=${project.version},
+ org.apache.commons.lang.enums;version=${project.version},
+ org.apache.commons.lang.exception;version=${project.version},
+ org.apache.commons.lang.math;version=${project.version},
+ org.apache.commons.lang.mutable;version=${project.version},
+ org.apache.commons.lang.text;version=${project.version},
+ org.apache.commons.lang.time;version=${project.version}
+               </Export-Package>
+               <Import-Package>
+ org.apache.commons.lang;version=${project.version},
+ org.apache.commons.lang.builder;version=${project.version},
+ org.apache.commons.lang.enum;version=${project.version},
+ org.apache.commons.lang.enums;version=${project.version},
+ org.apache.commons.lang.exception;version=${project.version},
+ org.apache.commons.lang.math;version=${project.version},
+ org.apache.commons.lang.mutable;version=${project.version},
+ org.apache.commons.lang.text;version=${project.version},
+ org.apache.commons.lang.time;version=${project.version}
+               </Import-Package>
+             </manifestEntries>
+           </archive>
+         </configuration>
+       </plugin>
+ }}}
+ 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to