Version attribute missing from Import-Package on provided dependencies
----------------------------------------------------------------------

                 Key: FELIX-899
                 URL: https://issues.apache.org/jira/browse/FELIX-899
             Project: Felix
          Issue Type: Bug
          Components: Maven Bundle Plugin
         Environment: Maven version: 2.0.9
Java version: 1.6.0_11
OS name: "linux" version: "2.6.25-gentoo-r7" arch: "amd64" Family: "unix"
            Reporter: Brian Atkinson
         Attachments: projects.tar.bz2

I have been using and testing out the 
maven-bundle-plugin-1.5.0-20081205.125536-1 (SNAPSHOT) and ran across what I 
believe is a bug.

Suppose there is a project a:a:1.0.0-SNAPSHOT.  This project has a single 
class: a.a.A.  The bundle plugin has the following instructions:
<instructions>
        
<_versionpolicy>[$${version;===;$...@}},$${version;=+;$...@}})</_versionpolicy>
        
<Bundle-RequiredExecutionEnvironment>JavaSE-1.6</Bundle-RequiredExecutionEnvironment>
        
<Export-Package>$${replace;${Bundle-SymbolicName};\W;.}.*;version=${project.version}</Export-Package>
</instructions>

This results in an Export-Package line of:
Export-Package: a.a;version="1.0.0.SNAPSHOT"

So far so good.  Now suppose there is a project b:b:1.0.0-SNAPSHOT.  This 
project depends on a:a:1.0.0-SNAPSHOT (scope: provided) and the project also 
has a single class b.b.B which extends a.a.A.  The maven-bundle-plugin is given 
the same instructions as project a:a above.  The resulting Import-Package line 
is:
Import-Package: a.a,b.b;version="[1.0.0,1.1)"

This is not what is expected.  What is expected is the following:
Import-Package: a.a;version="[1.0.0,1.1)",b.b;version="[1.0.0,1.1)"

Digging into the code I found that in 
org.apache.felix.bundleplugin.BundlePlugin (trunk rev: 723704) in function 
"protected Jar[] getClasspath( MavenProject currentProject ) throws 
ZipException, IOException" line 708 reads:
final Collection artifacts = getSelectedDependencies( 
currentProject.getArtifacts() );

When the plugin is running "currentProject.getArtifacts()" returns an empty 
set.  This then causes the classpath not to be set properly when calling BND 
(none of the dependencies are available for reading their manifests).  I 
changed the line to use "currentProject.getDependencyArtifacts()" and the 
manifest for b:b was correct.

I am going to attach a file with two very simple projects which mirror what I 
have described here.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to