Hello,

I have spent the last two days trying to understand what I am doing wrong but I cannot find out by myself.

I want to build a lib bundle that will contain the package "fr.numvision.common" using Maven and the maven-bundle-plugin. So every classes inside it can ben used by some other bundle. My package depends on external jars such as commons-io, log4j, jdom... so they need to be embedded into the bundle.

The bnd part of the plugin looks like:
<Bundle-SymbolicName>${pom.groupId}.${pom.artifactId}</Bundle-SymbolicName>
<Bundle-Name>${pom.artifactId}</Bundle-Name>
<Bundle-Version>2.0</Bundle-Version>
<Export-Package>fr.numvision.*</Export-Package>
<Private-Package>!fr.numvision.*,*</Private-Package>

Everythings build fines, I can even install the bundle into felix. The pb comes when I try to activate the bunde.

Here is what I get:

-> install file:D:\MavenRepositoryImports\common-1.0-SNAPSHOT.jar
Bundle ID: 9
-> ps
START LEVEL 1
  ID   State         Level  Name
[   0] [Active     ] [    0] System Bundle (2.0.1)
[   1] [Active     ] [    1] Apache Felix Bundle Repository (1.4.2)
[   2] [Active     ] [    1] Apache Felix Shell Service (1.4.1)
[   3] [Active     ] [    1] Apache Felix Shell TUI (1.4.1)
[   9] [Installed  ] [    1] common (2.0)
-> start 9
org.osgi.framework.BundleException: Unresolved constraint in bundle fr.numvision.common [9]: package; (package=.)


I do not understand this error: every lib class where embedded in the jar. The only strange things I can see is the Import-Package part of the MANIFEST which starts by "." and by the package name itself (isn'it strange for the package to import itself?).

Thanks for your help, I am litteraly getting crazy!

Renaud Pelissier




The MANIFEST.MF

Manifest-Version: 1.0
Export-Package: fr.numvision.common.xml;uses:="fr.numvision.common",fr
.numvision.common.windows,fr.numvision.common.ssh;uses:="fr.numvision
.common.xml,fr.numvision.common",fr.numvision.common,fr.numvision.com
mon.exec;uses:="fr.numvision.common"
Private-Package: com.jcraft.jsch,com.jcraft.jsch.jce,com.jcraft.jsch.j
craft,com.jcraft.jsch.jgss,org.apache.commons.exec,org.apache.commons
.exec.environment,org.apache.commons.exec.launcher,org.apache.commons
.exec.util,org.apache.commons.io,org.apache.commons.io.comparator,org
.apache.commons.io.filefilter,org.apache.commons.io.input,org.apache.
commons.io.output,org.apache.commons.lang,org.apache.commons.lang.bui
lder,org.apache.commons.lang.enum,org.apache.commons.lang.enums,org.a
pache.commons.lang.exception,org.apache.commons.lang.math,org.apache.
commons.lang.mutable,org.apache.commons.lang.text,org.apache.commons.
lang.time,org.jdom,org.jdom.adapters,org.jdom.filter,org.jdom.input,o
rg.jdom.output,org.jdom.transform,org.jdom.xpath,org.snipecode.reg,or
g.snipecode.reg.test
Built-By: renaud
Tool: Bnd-0.0.238
Bundle-Name: common
Created-By: Apache Maven Bundle Plugin
Build-Jdk: 1.6.0_17
Bundle-Version: 2.0
Bnd-LastModified: 1263312797074
Bundle-ManifestVersion: 2
Import-Package: .,fr.numvision.common,fr.numvision.common.exec,fr.numv
ision.common.ssh,fr.numvision.common.windows,fr.numvision.common.xml,
javax.crypto,javax.crypto.interfaces,javax.crypto.spec,javax.xml.pars
ers,javax.xml.transform,javax.xml.transform.sax,javax.xml.transform.s
tream,junit.framework,oracle.xml.parser,oracle.xml.parser.v2,org.apac
he.xerces.dom,org.apache.xerces.parsers,org.ietf.jgss,org.jaxen,org.j
axen.jdom,org.w3c.dom,org.xml.sax,org.xml.sax.ext,org.xml.sax.helpers
Bundle-SymbolicName: fr.numvision.common
Originally-Created-By: Apache Maven Bundle Plugin



The POM:

<project xmlns="http://maven.apache.org/POM/4.0.0"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd";>
   <modelVersion>4.0.0</modelVersion>
   <groupId>fr.numvision</groupId>
   <artifactId>common</artifactId>
   <packaging>bundle</packaging>
   <version>1.0-SNAPSHOT</version>
   <name>common</name>
   <url>http://maven.apache.org</url>
   <dependencies>
       <dependency>
           <groupId>junit</groupId>
           <artifactId>junit</artifactId>
           <version>3.8.1</version>
           <scope>test</scope>
       </dependency>
       <!--
           mvn install:install-file -DgroupId=org.apache.commons
           -DartifactId=exec -Dversion=1.0 -Dpackaging=jar
-Dfile=D:\MavenRepositoryImports\commons-exec-1.0\commons-exec-1.0.jar
       -->
       <dependency>
           <groupId>org.apache.commons</groupId>
           <artifactId>commons-exec</artifactId>
           <version>1.0</version>
           <scope>compile</scope>
       </dependency>
       <!--
           mvn install:install-file -DgroupId=org.apache.commons
           -DartifactId=exec -Dversion=1.0 -Dpackaging=jar
-Dfile=D:\MavenRepositoryImports\commons-exec-1.0\commons-exec-1.0.jar
       -->
       <dependency>
           <groupId>commons-io</groupId>
           <artifactId>commons-io</artifactId>
           <version>1.4</version>
           <scope>compile</scope>
       </dependency>

       <!--
           mvn install:install-file -DgroupId=org.apache.commons
           -DartifactId=lang -Dversion=2.4 -Dpackaging=jar
-Dfile=D:\MavenRepositoryImports\commons-lang-2.4\commons-lang-2.4.jar
       -->
       <dependency>
           <groupId>commons-lang</groupId>
           <artifactId>commons-lang</artifactId>
           <version>2.4</version>
           <scope>compile</scope>
       </dependency>

       <!-- D:\MavenRepositoryImports\jsch-0.1.42 -->
       <dependency>
           <groupId>com.jcraft</groupId>
           <artifactId>jsch</artifactId>
           <version>0.1.41</version>
           <scope>compile</scope>
       </dependency>

       <!--
mvn install:install-file -DgroupId=org.snipecode -DartifactId=reg
           -Dversion=1.0 -Dpackaging=jar
           -Dfile=D:\MavenRepositoryImports\org.snipecode.reg-1.0.jar
       -->
       <dependency>
           <groupId>org.snipecode</groupId>
           <artifactId>reg</artifactId>
           <version>1.0</version>
           <scope>compile</scope>
       </dependency>
       <dependency>
           <groupId>org.jdom</groupId>
           <artifactId>jdom</artifactId>
           <version>1.1</version>
           <scope>compile</scope>
       </dependency>

   </dependencies>
   <build>
       <plugins>
           <plugin>
               <groupId>org.apache.felix</groupId>
               <artifactId>maven-bundle-plugin</artifactId>
               <version>1.4.0</version>
               <extensions>true</extensions>
               <configuration>
<excludeDependencies>*;scope=provided|runtime</excludeDependencies> <instructions> <Bundle-SymbolicName>${pom.groupId}.${pom.artifactId}</Bundle-SymbolicName>
                       <Bundle-Name>${pom.artifactId}</Bundle-Name>
<Bundle-Version>2.0</Bundle-Version><!--Tout ce qui est dans Private-Package sera copié à l'intérieur du paquet org.apache.*,com.jcraft.*,org.jdom.*,org.snipecode.*-->
                       <Export-Package>fr.numvision.*</Export-Package>
                       <Private-Package>!fr.numvision.*,*</Private-Package>
                   </instructions>
               </configuration>
           </plugin>
           <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-compiler-plugin</artifactId>
               <configuration>
                   <source>1.5</source>
                   <target>1.5</target>

               </configuration>
           </plugin>
       </plugins>
   </build>
</project>



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to