[ https://issues.apache.org/jira/browse/MNG-8112?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17929733#comment-17929733 ]
Tamas Cservenak commented on MNG-8112: -------------------------------------- Just to explain "last" bit ("My expectation would be"): This cannot happen (easily), as there is nothing to compare the two, the {{-Dmaven.ext.class.path=...}} is a path, and the JARs (files) on it are "lumped" onto maven.ext classpath (created IF extensions exist in system), while the {{.mvn/extensions.xml}} identifies the extension by GAV and create separate classloaders for each entry that maven.ext classloader "aggregates". So what happens if: * ONE of the file on ext.class.path (out of possibly many) is same as one GAV in extensions.xml? Also, what "same" means? How to check for "same"? Does version count? File hashes? Java packages conflict? * as can be seen, they end up in DIFFERENT CLASSLOADERS, as maven.ext directly loads former ones, and imports latter ones (as they get each own classloader). Perso, I just think this expectation is wrong (again, this is ONLY about last "my expectation" thing, not about this issue as whole or the rest of things mentioned here). > extension.xml is ignored when extension is loaded by -Dmaven.ext.class.path > --------------------------------------------------------------------------- > > Key: MNG-8112 > URL: https://issues.apache.org/jira/browse/MNG-8112 > Project: Maven > Issue Type: Bug > Components: Class Loading > Affects Versions: 3.9.6 > Reporter: Rich DiCroce > Priority: Major > > As the title says: extension.xml is ignored when an extension is loaded by > -Dmaven.ext.class.path, which makes it impossible to expose any additional > packages. > I am filing this as a bug due to [this > comment|https://issues.apache.org/jira/browse/MNG-6906?focusedCommentId=17719869&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-17719869] > on MNG-6906, which says that lib/ext and -Dmaven.ext.class.path are supposed > to be synonymous. Note that MNG-6906 is a related but different problem. > When looking at org.apache.maven.cli.MavenCli, the problems aren't too hard > to see: > # lib/ext extensions get loaded into the plexus.core realm (as per m2.conf), > but -Dmaven.ext.class.path extensions are loaded into the maven.ext realm (as > per MavenCli#setupContainerRealm()). > # loadCoreExtensions() operates on the coreRealm, but due to #1, the > extensions are not in that realm. Also, the result of parseExtClasspath() is > not passed to loadCoreExtensions(), so there is no way for > loadCoreExtensions() to find the relevant files. > The most obvious solution would be to call coreRealm.addURL() for each of the > files discovered by parseExtClasspath(). This would solve #1 above which > would implicitly fix #2. Though I don't know if it would have other > consequences. > If this is not a bug and is instead "works as designed", then > [https://maven.apache.org/guides/mini/guide-using-extensions.html] needs to > be updated to explain that the three methods of loading core extensions are > not equivalent. -- This message was sent by Atlassian Jira (v8.20.10#820010)