[ http://issues.apache.org/jira/browse/FELIXM2-5?page=all ]
Lonnie Pryor updated FELIXM2-5: ------------------------------- Attachment: maven-osgi-plugin-transitiveDependencies-2-patch.txt Updated patch for the current SVN trunk. > Enable support for inter-bundle transitive dependencies > ------------------------------------------------------- > > Key: FELIXM2-5 > URL: http://issues.apache.org/jira/browse/FELIXM2-5 > Project: Felix M2 Plugin > Issue Type: New Feature > Affects Versions: 0.1.2, 0.1.3 > Environment: Multi-bundle build environemnt > Reporter: Lonnie Pryor > Assigned To: Timothy Bennett > Priority: Minor > Attachments: maven-osgi-plugin-transitiveDependencies-2-patch.txt, > maven-osgi-plugin-transitiveDependencies-patch.txt > > > The OSGi R4 specification supports transitive dependencies via the > "visibility:=reexport" directive on the "Require-Bundle" manifest header (see > OSGi Service Platform Core Specification, Release 4, Chapter 3, Section 13). > Unfortunately, the Felix M2 Plugin does not support declaring this kind of > relationship in the POM. > By only using the dependency scope setting, developers can declare that a > specific dependency is not to be embedded in the bundle, but that dependency > is then never transitively passed on to other projects. It would be optimal > if the Maven transitive dependency mechanism could be configured to mirror > the one provided by OSGi. > Since the OsgiJarMojo class only embeds dependencies with the "jar" type, a > transitive, non-embedded dependency can be declared by giving it a type of > "osgi-bundle". There are, however, a couple of issues with this approach: > 1.) The ArtifactHandler implementation configured in > META-INF/plexus/components.xml specifies "includesDependencies" as true. This > makes any dependencies inherited through an "osgi-bundle" typed dependency > unavailable to other phases of the build life cycle. Setting > "includesDependencies" to false will resolve this issue. While this change > will create more overhead during bundle builds (a bundle dependency and all > of its embedded dependencies will be downloaded separately), this is required > if any of the transitive dependencies are needed on the compile or test class > paths. > 2.) The OsgiJarMojo class currently embeds any dependency with the type "jar" > that is on the runtime or compile scope. With transitive dependencies as > described above enabled, all jars embedded in bundle dependencies will also > be embedded in the dependent bundle. To resolve this, the OsgiJarMojo class > should be changed to only embed dependencies with the type "jar", on the > runtime or compile scope, and not inherited from a dependency with the > "osgi-bundle" type. The latter can be accomplished by analyzing the the > contents of the getDependencyTrail() method for each candidate "jar" artifact. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira