I am repackaging a couple of jars into one bundle and in the process, I have to exlclude a few classes from the second jar, as I will be creating a second bundle containing only those excluded classes. The motivation here is that the second bundle will act as a fragment to the first bundle and it will be only available in environment where its dependencies are satisfied. So, consider the following example:

a1.jar and a2.jar are being repackages into b1.jar and b2.jar.
b1.jar contains all classes from a1.jar and a2.jar except the classes having following pattern: p.q.r.Foo*
b2.jar contains classes having following pattern: p.q.r.Foo*Impl.

So, I am configuring my pom.xml like this:

<project>
<parent>
<groupId>xxx</groupId>
<artifactId>external</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>a1-a2--repackaged</artifactId>
<packaging>jar</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.0.1</version>
<configuration>
<instructions>
<Export-Package> !p.q.r.Foo*, p.q.* </Export-Package>
<Private-Package>!*</Private-Package>
<Import-Package>*</Import-Package>
</instructions>
</configuration>
<executions>
<execution>
<id>osgi-bundle</id>
<phase>package</phase>
<goals>
<goal>bundle</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>p.q</groupId>
<artifactId>a1</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>p.q</groupId>
<artifactId>a2</artifactId>
<optional>1.0</optional>
</dependency>
</dependencies>
</project>

Yet, I see p.q.r.Foo, p.q.r.FooImpl and similarly named classes being part of the bundle. What am I doing wrong. I do see the following warning: [WARNING] Warning building bundle xxx:a1-a2-repackaged:jar:1.0-SNAPSHOT : Instructions in Export-Package that are never used: *p\.q\.r\.Foo.**

So, it seems it is expecting a package pattern there and I am trying to give a class name pattern. How to exclude a few classes then?

Thanks,
Sahoo

Reply via email to