[ http://jira.codehaus.org/browse/MNGECLIPSE-106?page=all ]
Eugene Kuleshov updated MNGECLIPSE-106:
---------------------------------------
Assignee: (was: Eugene Kuleshov)
> Dependency Resolver and PDE conflicts
> -------------------------------------
>
> Key: MNGECLIPSE-106
> URL: http://jira.codehaus.org/browse/MNGECLIPSE-106
> Project: Maven 2.x Extension for Eclipse
> Issue Type: Improvement
> Components: Dependency Resolver
> Environment: Eclipse PDE
> Reporter: Dimitry Voytenko
> Attachments: sample-plugins.zip
>
>
> All tests have been done using the solution provided in the
> http://jira.codehaus.org/browse/MNGECLIPSE-59. This solution works very well,
> but there're specifics when using it in the PDE (Plugin Development)
> environment.
> Attached are sample plugins that demonstrate the issue (tested under Eclipse
> 3.1.2). Unpack sample-plugins.zip and import projects in the workspace. Patch
> from MNGECLIPSE-59 should be applied. Rebuild both projects. Build of
> "com.example.plugins.main" should fail with an error:
> "Build path contains duplicate entry: 'com.example.plugins.component' for
> project com.example.plugins.main"
> The problem occures b/c of conflict b/w PDE classpath container and Maven2
> classpath container. They both contain "com.example.plugins.component"
> project.
> PDE's classpath container is defined in the org.eclipse.pde.core plugin as an
> org.eclipse.pde.core.requiredPlugins extension. It uses META-INF/MANIFEST.MF
> file as a source. MANIFEST.MF is basically an OSGI manifest that lists all
> dependent bundles in the form:
> Require-Bundle: org.eclipse.core.runtime, ...
> with optionally specified version and transiting information.
> Both manifest and PDE container are very essential for the PDE work. It's not
> clear if they can be properly extended to avoid conflicts.
> If such a way can be found, it is important to keep in mind the similarities
> and differences b/w Maven and PDE dependency management:
> a) PDE dependencies have flags "optional" and "re-exported". By default
> dependencies are required and non-transient. The "optional" property can be
> modeled via Maven'2 optional dependency. The re-exported property basically
> makes the dependency transient. I'm not sure if all of these states can be
> modelled via Maven's scope.
> b) Version management is different. PDE allows to specify dependency on the
> latest found version of a plugin (if version parameters is specified then it
> should be greater or equal). In Eclipse 3.2 it's actually possible to specify
> both borders, i.e. version no earlier than 2.0.0 and no later than 3.0.0.
> c) MANIFEST.MF is a deployable file. It's used at runtime to build the
> classloader graph.
> If it's not possible to extend PDE to source it from the Maven's
> configuration a temporary solution could be to exclude a dependent project
> from the Maven container if it can be found elsewhere in the classpath. The
> possible issue here: if it's possible to get the access from Maven container
> to the content of the other containers.
> Cooperation with Eclipse team would probably help here as this would also
> benefit them in the long run.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira