[ 
https://issues.apache.org/jira/browse/FELIX-3630?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13435161#comment-13435161
 ] 

Stuart McCulloch commented on FELIX-3630:
-----------------------------------------

The attached pom.xml has an additional execution of bundle:manifest which is 
tied to the 'process-classes' phase:

{code}
<executions>
  <execution>
    <id>bundle-manifest</id>
    <phase>process-classes</phase>
    <goals> 
      <goal>manifest</goal>
    </goals>
  </execution>
</executions>
{code}

This ends up creating a first-pass manifest under 
target/classes/META-INF/MANIFEST.MF which exports the package using the bundle 
version. The version appears to be added to the export by bnd, it isn't in the 
Export-Package instruction generated by the bundle plugin during this execution 
(see mvn clean process-classes -X). This is likely down to the slightly 
different approach taken by bundle:manifest (which analyzes an existing 
jar/directory using instructions as a guide) and bundle:bundle (which builds a 
fresh bundle based on the classpath and a set of instructions) - it looks like 
bnd's Builder takes package-level packageinfo versions into account, but bnd's 
Analyzer doesn't.

After this extra execution has completed the bundle packaging lifecycle kicks 
in and builds the bundle - once again mvn -X suggests that the bundle plugin 
doesn't add any specific versions to the default instructions, but the manifest 
we get back from bnd has the import range based on the interim manifest 
generated previously (with exports versioned using the bundle-version). 
However, the export now uses the packageinfo version.

I've tested this project with the latest maven-bundle-plugin 2.4.0-SNAPSHOT and 
the incorrect versions no longer appear, so it looks like this has been fixed 
in trunk.

As a workaround for 2.3.7 remove the above explicit execution of 
bundle:manifest (it is not required when you use bundle packaging) and you 
should get the expected results.
                
> Packages exported by bundle are (re)-imported with incorrect version
> --------------------------------------------------------------------
>
>                 Key: FELIX-3630
>                 URL: https://issues.apache.org/jira/browse/FELIX-3630
>             Project: Felix
>          Issue Type: Bug
>          Components: Maven Bundle Plugin
>    Affects Versions: maven-bundle-plugin-2.3.7
>            Reporter: Michael Taeschner
>         Attachments: importTest.zip
>
>
> Packages exported by bundle are (re)-imported with incorrect version using 
> the bundle version instead of the package version.
> I have created an example where the bundle is version 1.2.0-SNAPSHOT and the 
> package-version of the exported package is 1.0.0 (via *packageinfo* file)
> Resulting Manifest:
> Manifest-Version: 1.0
> Bnd-LastModified: 1345038828923
> Build-Jdk: 1.6.0_31
> Built-By: u056801
> Bundle-Description: maven-bundle-plugin Import Package Test
> Bundle-ManifestVersion: 2
> Bundle-Name: Imports Test
> Bundle-SymbolicName: com.mitaes.imports
> Bundle-Version: 1.2.0.SNAPSHOT
> Created-By: Apache Maven Bundle Plugin
> Export-Package: com.mitaes.service;version="1.0.0"
> Import-Package: com.mitaes.service;version="[1.2,2)"
> Tool: Bnd-1.50.0

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to