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