On 10 November 2010 16:56, Stuart McCulloch <[email protected]> wrote:

> On 2 November 2010 09:02, Sahoo <[email protected]> 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?
>>
>
> try using m-b-p's Embed-Dependency as that supports regexp inclusion of
> contents (translates to Include-Resource under the covers)
>

^ actually for inclusion of contents it uses Ant-like path syntax (same as
bnd) but you get the idea...


> then use the -exportcontents directive to choose which packages you want to
> export (as this won't pull any classes from the classpath)
>
> Thanks,
>> Sahoo
>>
>
> --
> Cheers, Stuart
>

Reply via email to