You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by Robert Scholte <rf...@apache.org> on 2018/06/24 10:26:11 UTC
Revisiting MNG-6209 (inconsistent activation of components from
multiple extensions=true plugins) revisited
This was the issue reverted after 3.5.1, which should deserve a revisit.
Stephen created a sample project[1] to show the effects when working with
extensions
I've created a matrix[2] with the changes of behavior between 3.5.0 and
3.5.1
There's also documentation about this topic[3], especially the plugin
classloaders-chapter is of interest here.
I first want to agree on what should be visible at every stage, so let me
try to make a start (I ignore the order of loading for now):
1. Consider a plugin containing:
@Component(role = Lifecycle.class)
private List<Lifecycle> lifecycles;
In this case it must see all Lifecycle instances, getting them from
extensions, plugins marked as extension and the plugin itself.
2. The Plugin Classloader should only contain the plugin classes, it
should NOT have access to extensions.
3. The Thread CL, I don't have an answer for that yet. In Maven 3.5.0 it
was always the same the Plugin CL, but in Maven 3.5.1 it often wasn't.
Maybe the most important question is: when do you want to switch to the
Thread CL?
To make the discussion a little bit better to understand: Have a look at
the ListMojo[4] and wonder for every classloader: should it have access to
a specific resource? e.g. we discovered that maven-assembly-plugin
Also have a look at earlier discussion[5]
IMO Maven does have incorrect behavior right now. e.g. if I want to use
scm-local with maven-release-plugin (for demo purpose) I must add it as a
dependency to the plugin, whereas the correct way is to add it as an
extension.
So it would be great to have this fixed in Maven 3.6.x
thanks,
Robert
[1] https://github.com/stephenc/mng-6209
[2]
https://cwiki.apache.org/confluence/download/attachments/2329841/classrealms.pdf?api=v2
[3]
https://svn.apache.org/repos/infra/websites/production/maven/content/reference/maven-classloading.html
[4]
https://github.com/stephenc/mng-6209/blob/master/plugin1/src/main/java/localdomain/localhost/plugin1/ListMojo.java
[5] https://maven.markmail.org/thread/2rytungr2iyomhji
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org