ops4j / org.ops4j.pax.construct

Build, manage and deploy many types of OSGi bundles
https://ops4j1.jira.com/wiki/display/paxconstruct/Pax+Construct
24 stars 14 forks source link

getArtifacts method in provision does not work the same for maven3 [PAXCONSTRUCT-137] #145

Open ops4j-issues opened 13 years ago

ops4j-issues commented 13 years ago

Andreas Pieber created PAXCONSTRUCT-137

While the getArtifacts method returned only the "direct" artifacts in maven2 now also the childs are returned which leads to a VERY broken behavior :slightly_frowning_face:


Affects: 1.5 Fixed in: 1.7.0 Votes: 1, Watches: 1

ops4j-issues commented 13 years ago

Stuart McCulloch commented

You don't describe what the broken behaviour is or provide an example project, which makes it hard to fix.

Note "MavenProject.getArtifacts" should always returns both direct and transitive dependencies both in Maven 2 and Maven 3, but there may be a difference between them wrt. which dependencies are resolved at the time of provisioning. This is because Maven 3 honours the @requiresDependencyResolution mojo setting and makes sure the resolved set matches the request, whereas with Maven 2 the visible set of resolved dependencies could vary depending on what plugins ran before your plugin.

Regardless of the difference between Maven 2 and Maven 3, there was an explicit request to look for bundles in transitive dependencies https://ops4j1.jira.com/browse/PAXCONSTRUCT-123 which means the plugin is currently "working as designed".

Whether we should provide a switch to only look at direct (non-transitive) dependencies is of course another question...

ops4j-issues commented 13 years ago

Andreas Pieber commented

Hey Stuart,

Thank's for the fast response and sorry for the missing example. The problem is quite simple:

  1. checkout the following version of pax-wicket
  2. mvn clena install
  3. and add in samples/pom.xml <noDependencies>true</> setting for pax-maven-plugin
  4. mvn pax:provision

https://github.com/ops4j/org.ops4j.pax.wicket/commit/6221f52c38b88c70e65b547cf8ad8463e0873b47

This will run felix with all deps (although no-dep is set); then...

  1. checkout the following commit (nothing changed but downgrade to 1.4 of pax-construct)
  2. remove runner folder
  3. run pax:provision again

https://github.com/ops4j/org.ops4j.pax.wicket/commit/b9de1d96a567f800ed4beed26d23d9b16caab07e

Only the direct deps are resolved.

Maybe I missed something but since all deps are resolved although the noDependencies flag is used this sounds rather like a bug to me.

WDYT?