[ 
https://issues.apache.org/jira/browse/MINSTALL-202?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17875856#comment-17875856
 ] 

Jimisola Laursen commented on MINSTALL-202:
-------------------------------------------

I think I found a solution for us using MAVEN_ARGS, but I'll have to test it so 
that MAVEN_ARGS can be used to point out a core extension with
{code:java}
MAVEN_ARGS="-Dmaven.ext.class.path=extension.jar"{code}

Yes, inhouse projects and we have a lot of them.

We avoid configuration files in projects like the plague because it does not 
scale (easy to forget to add and/or update). 

If we have to make a change then we have to do it in all those projects and 
it's configuration for lombok, maven, log4j, sonarqube and so on. Every single 
tool has the mindset that it's just "a configuration file more". It's sadly 
not. It needs to be maintained and version controlled. It was, e.g. only in 
[May this year that renovate got support for 
.mvn/extensions.xml|https://github.com/renovatebot/renovate/pull/28893].

If it is something that should be applied to "all" our projects then we prefer 
to configure that globally and handle the outliers separately.

*Globally* in this case is that the configuration can be set in a way that it 
applies to all projects being run/build on that machine for a user and ideally 
it can also be overridden on project level or similar.

That is, it does not matter if it's an actual user on a machine or in CI/CD. 
The only difference in this case is that _Registered via CLI argument mvn 
-Dmaven.ext.class.path=extension.jar_ would be very simple to add and maintain 
in CI/CD ({_}and this is when I recalled seeing something about MAVEN_ARGS for 
Maven 3.9+{_}).

E.g. for mypy we have a global configuration file in ~/.config/mypy/mypy.ini 
that can be overridden on project level if needed.

I also had an idea of :

 
{code:java}
<profiles>
    <profile>
        <id>default-options</id>
        <properties>
            <maven.ext.class.path>extension.jar</maven.ext.class.path>
        </properties>
    </profile>
</profiles> 
{code}

but, I'm not sure that that is the same as providing it on the command line as 
-D<...> or if settings.xml is read too late when it comes to core extensions. 
Been looking for documentation on it and searching for execution diagrams 
without luck.

> Version property is not expanded for destination path
> -----------------------------------------------------
>
>                 Key: MINSTALL-202
>                 URL: https://issues.apache.org/jira/browse/MINSTALL-202
>             Project: Maven Install Plugin
>          Issue Type: Bug
>          Components: install:install
>            Reporter: Jimisola Laursen
>            Priority: Major
>
> I recently [contributed|https://github.com/mojohaus/versions/issues/1071] the 
> goal 
> [versions:use-dynamic-version-from-scm|https://www.mojohaus.org/versions/versions-maven-plugin/use-dynamic-version-from-scm-mojo.html]
> to MojoHaus Versions Maven plugin with the help of [~sjaranowski] .
> The goal is to allow dynamic versioning using [Maven CI Friendly 
> Versions|https://maven.apache.org/maven-ci-friendly.html] by setting a 
> property (revision), i.e. 
> {code:java}
> <version>${revision}</version> {code}
> However, it turns out that 
> {code:java}
> ./mvnw 
> org.codehaus.mojo:versions-maven-plugin:2.17.1:use-dynamic-version-from-scm 
> install -useVersion=0.0.0{code}
> does not give the correct destination path but rather:
> /home/u30576/.m2/repository/se/lfv/lips3/microservices/ms001/${revision}/ms001-${revision}-spring-boot.jar
> as seen below.
>  
> {code:java}
> u30576@DCL0004:~/dev/clones/sysdev/lips3/microservices/ms001 (main)$./mvnw 
> org.codehaus.mojo:versions-maven-plugin:2.17.1:use-dynamic-version-from-scm 
> install -useVersion=0.0.0
> [INFO] ------------------< se.lfv.lips3.microservices:ms001 
> >------------------
> [INFO] Building ms001 ${revision}
> [INFO]   from pom.xml
> [INFO] --------------------------------[ jar 
> ]---------------------------------
> [INFO] 
> [INFO] --- versions:2.17.1:use-dynamic-version-from-scm (default-cli) @ ms001 
> ---
> [INFO] Property 'revision' set to: 0.0.0
> ...
> [INFO] --- jar:3.4.2:jar (default-jar) @ ms001 ---
> [INFO] Building jar: 
> /home/u30576/dev/clones/sysdev/lips3/microservices/ms001/target/ms001-0.0.0.jar
> [INFO] 
> [INFO] --- javadoc:3.8.0:jar 
> (se.lfv.maven.tiles_lfv-development-environment-tile_0.2.11__attach-javadocs) 
> @ ms001 ---
> [INFO] Configuration changed, re-generating javadoc.
> [INFO] Building jar: 
> /home/u30576/dev/clones/sysdev/lips3/microservices/ms001/target/ms001-0.0.0-javadoc.jar
> [INFO] 
> [INFO] --- spring-boot:3.3.2:repackage 
> (se.lfv.maven.tiles_spring-boot-application-tile_0.4.1__repackage) @ ms001 ---
> [INFO] Attaching repackaged archive 
> /home/u30576/dev/clones/sysdev/lips3/microservices/ms001/target/ms001-0.0.0-spring-boot.jar
>  with classifier spring-boot
> [INFO] 
> [INFO] 
> [INFO] --- install:3.1.2:install (default-install) @ ms001 ---
> [INFO] Installing 
> /home/u30576/dev/clones/sysdev/lips3/microservices/ms001/pom.xml to 
> /home/u30576/.m2/repository/se/lfv/lips3/microservices/ms001/${revision}/ms001-${revision}.pom
> [INFO] Installing 
> /home/u30576/dev/clones/sysdev/lips3/microservices/ms001/target/ms001-0.0.0.jar
>  to 
> /home/u30576/.m2/repository/se/lfv/lips3/microservices/ms001/${revision}/ms001-${revision}.jar
> [INFO] Installing 
> /home/u30576/dev/clones/sysdev/lips3/microservices/ms001/target/ms001-0.0.0-javadoc.jar
>  to 
> /home/u30576/.m2/repository/se/lfv/lips3/microservices/ms001/${revision}/ms001-${revision}-javadoc.jar
> [INFO] Installing 
> /home/u30576/dev/clones/sysdev/lips3/microservices/ms001/target/ms001-0.0.0-spring-boot.jar
>  to 
> /home/u30576/.m2/repository/se/lfv/lips3/microservices/ms001/${revision}/ms001-${revision}-spring-boot.jar
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] BUILD SUCCESS
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Total time:  6.410 s
> [INFO] Finished at: 2024-07-30T13:49:32+02:00
> [INFO] 
> ------------------------------------------------------------------------
>  
> {code}
>  
> I'm aware that Maven outputs "[INFO] Building ms001 ${revision}" initially 
> (before the plugin has run) but I reckon that _initialize_ is the correct 
> phase to execute the plugin in.
> Build Info:
> Apache Maven 3.9.8 (36645f6c9b5079805ea5009217e36f2cffd34256)
> Maven home: /home/uXXXXX/.m2/wrapper/dists/apache-maven-3.9.8/d33422ce
> Java version: 21.0.1, vendor: Eclipse Adoptium, runtime: 
> /opt/dev/sdkman/candidates/java/21.0.1-tem
> Default locale: en_US, platform encoding: UTF-8
> OS name: "linux", version: "6.5.0-45-generic", arch: "amd64", family: "unix"
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to