Well, bnd thinks "packages" so there is no support for class based filtering.

That said, you might try:

        b1.jar:
        Include-Resource: \
                @a1.jar!/!p/q/r/Foo*.class, \
                @a2.jar!/!p/q/r/Foo*.class
        -exportcontents: p.q.*

        b2.jar
        Include-Resource: \
                @a1.jar!/p/q/r/Foo*Impl.class, 
                @a2.jar!/p/q/r/Foo*Impl.class


There is one other possibility, -donotcopy ... It is intended for skipping 
.svn, CVS, etc resources. It is global and it is a REAL regular expression (not 
the normal globbing).

        <_donotcopy>.*Foo.*\.class|CVS|.svn</_donotcopy>

Haven't tried that though ...

The disadvantage is that Include-Resource requires access to the raw jar and I 
guess you want it from the classpath because you're running this in maven. I 
could if you really need this add a feature to bnd that allows resource 
filtering on the Private-Package, Export-Package, and Conditional-Package.

Kind regards,

        Peter Kriens



On 2 nov 2010, at 09:02, Sahoo wrote:

> [Apology if this is a duplicate. I sent the earlier email from my Sun.COM 
> email which does not subscribe to this ML]
> 
> 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
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
For additional commands, e-mail: users-h...@felix.apache.org

Reply via email to