It's here https://maven.apache.org/examples/maven-3-lifecycle-extensions.html Delany
On Thu, 30 Sep 2021, 16:56 Austin Witt, <[email protected]> wrote: > > /usr/share/maven/lib/ext > > That would be perfect! Is that documented somewhere? I never saw mention of > that before today! > > What is the earliest version of Maven that supports that extension folder? > > On Thu, Sep 30, 2021 at 1:19 AM Delany <[email protected]> wrote: > > > Hi Austin, > > > > I think those Takari projects aren't maintained anymore. The issue was > > recently fixed in Maven 3.8.2 with > > https://issues.apache.org/jira/browse/MNG-4706 > > > > You can use the command line -Dmaven.ext.class.path to include the > > extension. The strange wording is perhaps because there is an idea in the > > Maven community that command line arguments are second-class citizens to > > configuration written into the pom files, and conversely that you can > throw > > whatever arguments in and it will not interfere with existing > > configuration. There is some truth to this, as arguments to config a > plugin > > are honoured, but not if the same config has been configured in a pom. > > > > You can also add the extensions for the system to > /usr/share/maven/lib/ext > > > > Thanks, > > Delany > > > > > > > > On Thu, 30 Sept 2021 at 07:45, Austin Witt <[email protected]> > wrote: > > > > > I wish to install a Maven extension - Takari's Concurrent Safe Local > > > Repository extension ( > > > > > > http://takari.io/book/30-team-maven.html#concurrent-safe-local-repository > > > ) > > > - on a system such that it's picked up by all Maven runs. > > > > > > Individual projects should not have to put it in their pom.xml; I do > not > > > want projects to be able to opt-out of this extension, and I do not > want > > > them to have to opt-in. > > > Individual projects should not have to put it in their > > > basedir/.mvn/extensions.xml; I do not want projects to be able to > opt-out > > > of this extension, and I do not want them to have to opt-in. > > > > > > However... > > > > > > This is a CICD system where builds run in Docker containers, and each > get > > > their *own* ~/.m2 directory (complete with their own self-specified > > > settings.xml), which the builds themselves set up *if they need it* at > > > build-time. So, there isn't a ~/.m2/lib/ext that I can drop the > extension > > > JAR into "ahead-of-time" before Maven runs - to put it there, I'd have > to > > > modify each project's pipeline to drop the JAR in before kicking off > any > > > Maven processes. > > > > > > I am looking for a way to provide the extension as default > functionality > > > for *all* Maven processes on a system, without requiring an individual > > > "maven project in a git repo" to be aware of it. > > > > > > I am not entirely sure I understand how the final Extension > > > mechanism, -Dmaven.ext.class.path, works. It *seems like* I could add > > that > > > via environment variables as a global maven option, and point at a JAR > > > somewhere *else *on the system. However, the documentation I could find > > on > > > it cautions: > > > > > > -Dmaven.ext.class.path=[path to files] is a little bit more flexible, > but > > > remains not configured into the build, which is not suitable to ensure > an > > > extension is available at build time. > > > -- https://maven.apache.org/studies/extension-demo/ > > > > > > > > > What does "not configured into the build, which is not suitable to > ensure > > > an extension is available at build time" *mean* ? Is it just saying > that > > > it's not loaded before the project is parsed and so is unsuitable for > > > extensions that require that, as identified in the line about pom.xml > > > extension configuration? All documentation I can find about > > > -Dmaven.ext.class.path talks about EventSpy implementations - does it > > > *only* work > > > for those? Or can I load other extensions via that mechanism? > > > > > > If -Dmaven.ext.class.path works with all extension types *and* loads > > > in-time for Takari's extension, I can probably use that. > > > > > > If not, is there a way to change the Maven extension directory with a > > > property? E.g. mvn -Dext.dir=/opt/some/dir and have that used, instead > of > > > the user-local ~/.m2/lib/ext? > > > > > > Thank you for your time, > > > Austin > > > > > >
