You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@felix.apache.org by Prashant Bhat <pr...@gmail.com> on 2007/08/28 11:55:53 UTC

How to include resources from the dependent jar file?

Hi,

How do I include resources from the dependent jar file?
For ex. I'm converting geronimo-jpa_3.0_spec-1.1.jar to osgi bundle and I've
the following definitions in pom.

<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <version>1.0.0</version>
    <configuration>
        <instructions>
            <Bundle-Name>${artifactId}</Bundle-Name>

<Bundle-SymbolicName>${groupId}.${artifactId}</Bundle-SymbolicName>
            <Export-Package>javax.persistence*;version=${jpa.version
};-noimport:=true</Export-Package>
            <Import-Package>*</Import-Package>
            <Implementation-Version>${jpa.version}</Implementation-Version>
        </instructions>
    </configuration>
    <extensions>true</extensions>
</plugin>

<dependencies>
    <dependency>
        <groupId>org.apache.geronimo.specs</groupId>
        <artifactId>geronimo-jpa_3.0_spec</artifactId>
        <version>${jpa.version}</version>
    </dependency>
</dependencies>

Now, If I want to include a resource in META-INF, what instructions I should
use?
It is very much needed for some swing-ui libraries which define other
resources at the top level of the jar.
Are they also considered as packages or private packages?
or
What is the syntax for <Include-Resource> in such a scenario?(PS. I don't
have the jar file relative to pom, only a dependency is set)

Thanks,
Prashant

Re: How to include resources from the dependent jar file?

Posted by Prashant Bhat <pr...@gmail.com>.
Hello Stuart,

Thanks a lot.  That clarified my doubt and I could get it working easily.

Thanks,
Prashant

On 8/28/07, Stuart McCulloch <st...@jayway.net> wrote:
>
> On 28/08/07, Prashant Bhat <pr...@gmail.com> wrote:
> >
> > Hi,
> >
> > How do I include resources from the dependent jar file?
> > For ex. I'm converting geronimo-jpa_3.0_spec-1.1.jar to osgi bundle and
> > I've
> > the following definitions in pom.
> >
> > <plugin>
> >     <groupId>org.apache.felix</groupId>
> >     <artifactId>maven-bundle-plugin</artifactId>
> >     <version>1.0.0</version>
> >     <configuration>
> >         <instructions>
> >             <Bundle-Name>${artifactId}</Bundle-Name>
> >
> > <Bundle-SymbolicName>${groupId}.${artifactId}</Bundle-SymbolicName>
> >             <Export-Package>javax.persistence*;version=${jpa.version
> > };-noimport:=true</Export-Package>
> >             <Import-Package>*</Import-Package>
> >             <Implementation-Version>${jpa.version
> > }</Implementation-Version>
> >         </instructions>
> >     </configuration>
> >     <extensions>true</extensions>
> > </plugin>
> >
> > <dependencies>
> >     <dependency>
> >         <groupId>org.apache.geronimo.specs</groupId>
> >         <artifactId>geronimo-jpa_3.0_spec</artifactId>
> >         <version>${jpa.version}</version>
> >     </dependency>
> > </dependencies>
> >
> > Now, If I want to include a resource in META-INF, what instructions I
> > should
> > use?
> > It is very much needed for some swing-ui libraries which define other
> > resources at the top level of the jar.
> > Are they also considered as packages or private packages?
> > or
> > What is the syntax for <Include-Resource> in such a scenario?
> >
>
> first some background, the general Include-Resource syntax is:
>
>   <Include-Resource>iclause,iclause,...</Include-Resource>
>
> where:
>
>   iclause    ::= inline | copy
>   copy       ::= '{' process '}' | process
>   process    ::= assignment | simple
>   assignment ::= PATH '=' PATH
>   simple     ::= PATH
>   inline     ::= '@' PATH ( '!/' PATH? ('/**' | '/*')? )?
>
> ( taken from the Bnd docs at http://aqute.biz/Code/Bnd#include-resource )
>
> by default the bundle-plugin will add all maven resources to
> Include-Resource,
> ie. any files in src/main/resources will be copied to the bundle - so for
> example
> src/main/resources/META-INF/foo would be copied to META-INF/foo.
>
> however, if you explicitly set Include-Resource then maven resources won't
> be
> copied unless you add {maven-resources} to the includes (see issue
> FELIX-343)
>
> now, to get back to your question :)
>
> any dependency on the compilation classpath can be unpacked using:
>
>      @artifactId-version.jar!/PATH
>
> so:
>
>    <Include-Resource>
>      @geronimo-jpa_3.0_spec-${jpa.version}.jar!/META-INF/**
>    </Include-Resource>
>
> should copy the META-INF folder from the dependency into the bundle.
>
> HTH
>
> (PS. I don't
> > have the jar file relative to pom, only a dependency is set)
>
>
> that's ok - the bnd tool can use the compilation classpath to locate
> resources
>
> Thanks,
> > Prashant
> >
>
>
>
> --
> Cheers, Stuart
>

Re: How to include resources from the dependent jar file?

Posted by Stuart McCulloch <st...@jayway.net>.
On 28/08/07, Prashant Bhat <pr...@gmail.com> wrote:
>
> Hi,
>
> How do I include resources from the dependent jar file?
> For ex. I'm converting geronimo-jpa_3.0_spec-1.1.jar to osgi bundle and
> I've
> the following definitions in pom.
>
> <plugin>
>     <groupId>org.apache.felix</groupId>
>     <artifactId>maven-bundle-plugin</artifactId>
>     <version>1.0.0</version>
>     <configuration>
>         <instructions>
>             <Bundle-Name>${artifactId}</Bundle-Name>
>
> <Bundle-SymbolicName>${groupId}.${artifactId}</Bundle-SymbolicName>
>             <Export-Package>javax.persistence*;version=${jpa.version
> };-noimport:=true</Export-Package>
>             <Import-Package>*</Import-Package>
>             <Implementation-Version>${jpa.version
> }</Implementation-Version>
>         </instructions>
>     </configuration>
>     <extensions>true</extensions>
> </plugin>
>
> <dependencies>
>     <dependency>
>         <groupId>org.apache.geronimo.specs</groupId>
>         <artifactId>geronimo-jpa_3.0_spec</artifactId>
>         <version>${jpa.version}</version>
>     </dependency>
> </dependencies>
>
> Now, If I want to include a resource in META-INF, what instructions I
> should
> use?
> It is very much needed for some swing-ui libraries which define other
> resources at the top level of the jar.
> Are they also considered as packages or private packages?
> or
> What is the syntax for <Include-Resource> in such a scenario?
>

first some background, the general Include-Resource syntax is:

  <Include-Resource>iclause,iclause,...</Include-Resource>

where:

  iclause    ::= inline | copy
  copy       ::= '{' process '}' | process
  process    ::= assignment | simple
  assignment ::= PATH '=' PATH
  simple     ::= PATH
  inline     ::= '@' PATH ( '!/' PATH? ('/**' | '/*')? )?

( taken from the Bnd docs at http://aqute.biz/Code/Bnd#include-resource )

by default the bundle-plugin will add all maven resources to
Include-Resource,
ie. any files in src/main/resources will be copied to the bundle - so for
example
src/main/resources/META-INF/foo would be copied to META-INF/foo.

however, if you explicitly set Include-Resource then maven resources won't
be
copied unless you add {maven-resources} to the includes (see issue
FELIX-343)

now, to get back to your question :)

any dependency on the compilation classpath can be unpacked using:

     @artifactId-version.jar!/PATH

so:

   <Include-Resource>
     @geronimo-jpa_3.0_spec-${jpa.version}.jar!/META-INF/**
   </Include-Resource>

should copy the META-INF folder from the dependency into the bundle.

HTH

(PS. I don't
> have the jar file relative to pom, only a dependency is set)


that's ok - the bnd tool can use the compilation classpath to locate
resources

Thanks,
> Prashant
>



-- 
Cheers, Stuart