You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Tamas Cservenak (Jira)" <ji...@apache.org> on 2025/03/03 20:03:00 UTC

[jira] [Commented] (MNG-8598) Support for evaluated jvm.config files to improve lombok+ecj support

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

Tamas Cservenak commented on MNG-8598:
--------------------------------------

Since Maven 3.9.2 this was implemented: MNG-7774
In short, it allows you to use these two expressions {{${session.rootDirectory}}} and {{${session.topDirectory}}} in maven.config and CLI. Given jvm.config ends up on CLI (mvn script handles that, pretty much same as MAVEN_OPTS), you should be able to use former one.


> Support for evaluated jvm.config files to improve lombok+ecj support
> --------------------------------------------------------------------
>
>                 Key: MNG-8598
>                 URL: https://issues.apache.org/jira/browse/MNG-8598
>             Project: Maven
>          Issue Type: Improvement
>          Components: Command Line
>    Affects Versions: 3.9.6
>            Reporter: Marc Guillemot
>            Priority: Major
>
> We use lombok together with the ecj compiler in a large project. For that, we use {{lombok.jar}} as java agent for maven (corresponds to the official lombok documentation: [https://projectlombok.org/setup/ecj)|https://projectlombok.org/setup/ecj),].
> At the root level of the project, this is quite easy
> {{.mvn/jvm.config:}}
> {code:java}
> -javaagent:lombok.jar=ECJ
> {code}
> We want to be able to call mvn in any module of the project, which means that each submodule needs to have its own {{.mvn/jvm.config}} with the relative path to the {{lombok.jar}} file, otherwise maven can't start because the agent is not found:
>  - at depth 1: {{-javaagent:../lombok.jar=ECJ}}
>  - at depth 2: {{-javaagent:../../lombok.jar=ECJ}}
>  - at depth 3: {{-javaagent:../../../lombok.jar=ECJ}}
>  - ...
> This is naturally very annoying and error prone (new modules need to have their {{.mvn/jvm.config}} and relative paths have to be adapted when moving modules).
>  
> It seems to me that maven doesn't provide currently any better way to achieve that (I hope, I'm wrong) but that this could be achieved improving the {{{}mvn.bat{}}}/{{{}mvn{}}} scripts with:
>  * interpolation of contained variables ({{{}MAVEN_PROJECTBASEDIR{}}} would be the interesting one)
>  * support for two different {{jvm.config}} files allowing bat/sh specific references for variables.
> In our case it would be a "sh.jvm.config" with {{-javaagent:$MAVEN_PROJECTBASEDIR/lombok.jar=ECJ}} and a "bat.jvm.config" with {{{}-javaagent:%MAVEN_PROJECTBASEDIR%\lombok.jar=ECJ{}}}.



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