[ 
https://issues.apache.org/jira/browse/FELIX-899?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Brian Atkinson updated FELIX-899:
---------------------------------

    Attachment: projects2.tar.bz2

We can take version ranges out of the game -  just remove the "<versionpolicy 
/>" instruction.  The projects2 file is the same concept as before with this 
modification.  I would expect in project b:b's pom for there to be the line:
Import-Package: a.a;version="1.0",b.b;version="1.0"

However the following line is there instead:
Import-Package: a.a,b.b;version="1.0"

All of this version range stuff misses the point.  The "-classpath" directive 
to BND is not being filled out with the dependencies from the pom.  Reading 
BND's documentation, it seems that the "-classpath" directive should be filled 
out with all the dependencies.

I take a look at the code in teh getClasspath() function mentioned previously 
and it has provisions for allowing compile, system, and provided scope 
dependencies onto BND's classpath directive.  The problem is that when this 
code is run, MavenProject.getArtifacts() is not returning anything.  To be 
honest I think this part might be a bug in maven, but due to the lack of 
javadoc it is hard to tell if this is the case.  This problem also exibits in 
maven 2.0.8 so I doubt it though.

What is expected to be on the classpath directive to BND?  This is the key 
question.

> 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, projects2.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