[ 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

        

Reply via email to