[ https://issues.apache.org/jira/browse/MNG-8480?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Dmitry Spikhalskiy updated MNG-8480: ------------------------------------ Description: h2. Current behavior Specifying forceLegacyJavacApi=true omits important warning logs that may lead to tricky to-investigate states. h2. Expected behavior ```<forceLegacyJavacApi>true</forceLegacyJavacApi>``` shouldn't lead to omitting important information needed to investigate the compilation failure. h2. Context Our project uses log4j2 that recently got OSGI-related refinements: [https://logging.apache.org/log4j/2.x/release-notes.html#release-notes-2-22-0] Our maven-compiler-plugin is configured as follows: ``` <configuration> <forceLegacyJavacApi>true</forceLegacyJavacApi> <showWarnings>true</showWarnings> <failOnWarning>true</failOnWarning> <compilerArgs> <!-- compiling linter --> <arg>-Xlint:all</arg> </compilerArgs> </configuration> ``` After log4j2 upgrade, the project compilation fails with no helpful diagnostic: ``` [INFO] — maven-compiler-plugin:3.13.0:compile (default-compile) @ ... — [INFO] Recompiling the module because of changed dependency. [INFO] Compiling 190 source files with javac [debug release 21] to target/classes [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary for ... [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 19.421 s [INFO] Finished at: 2025-01-02T17:41:59-05:00 [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile (default-compile) on project ...: Compilation failure -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. ``` `-e` provides a stacktrace that doesn't lead to a rootcause. To find the root cause, we need to disable `forceLegacyJavacApi`. This provides the following output: ``` [INFO] — maven-compiler-plugin:3.13.0:compile (default-compile) @ ... — [INFO] Recompiling the module because of changed dependency. [INFO] Compiling 190 source files with javac [debug release 21] to target/classes [INFO] Annotation processing is enabled because one or more processors were found on the class path. A future release of javac may disable annotation processing unless at least one processor is specified by name (-processor), or a search path is specified (--processor-path, --processor-module-path), or annotation processing is enabled explicitly (-proc:only, -proc:full). Use -Xlint:-options to suppress this message. Use -proc:none to disable annotation processing. [INFO] ------------------------------------------------------------- [WARNING] COMPILATION WARNING : [INFO] ------------------------------------------------------------- [WARNING] Cannot find annotation method 'value()' in type 'aQute.bnd.annotation.baseline.BaselineIgnore': class file for aQute.bnd.annotation.baseline.BaselineIgnore not found [WARNING] Cannot find annotation method 'value()' in type 'aQute.bnd.annotation.baseline.BaselineIgnore': class file for aQute.bnd.annotation.baseline.BaselineIgnore not found [INFO] 2 warnings [INFO] ------------------------------------------------------------- [INFO] ------------------------------------------------------------- [ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] warnings found and -Werror specified [INFO] 1 error [INFO] ------------------------------------------------------------- [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary for ... [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 20.303 s [INFO] Finished at: 2025-01-02T17:58:54-05:00 [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile (default-compile) on project ...: Compilation failure [ERROR] warnings found and -Werror specified ``` That leads to a solution to the problem, which is adding ``` <dependency> <groupId>biz.aQute.bnd</groupId> <artifactId>biz.aQute.bnd.annotation</artifactId> <version>7.1.0</version> <scope>compile</scope> </dependency> ``` Expected behavior: was: Specifying forceLegacyJavacApi=true omits important warning logs that may lead to tricky to-investigate states. Our project uses log4j2 that recently got OSGI-related refinements: [https://logging.apache.org/log4j/2.x/release-notes.html#release-notes-2-22-0] Our maven-compiler-plugin is configured as follows: ``` <configuration> <forceLegacyJavacApi>true</forceLegacyJavacApi> <showWarnings>true</showWarnings> <failOnWarning>true</failOnWarning> <compilerArgs> <!-- compiling linter --> <arg>-Xlint:all</arg> </compilerArgs> </configuration> ``` After log4j2 upgrade, the project compilation fails with no helpful diagnostic: ``` [INFO] --- maven-compiler-plugin:3.13.0:compile (default-compile) @ ... --- [INFO] Recompiling the module because of changed dependency. [INFO] Compiling 190 source files with javac [debug release 21] to target/classes [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary for ... [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 19.421 s [INFO] Finished at: 2025-01-02T17:41:59-05:00 [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile (default-compile) on project ...: Compilation failure -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. ``` `-e` provides a stacktrace that doesn't lead to a rootcause. To find the root cause, we need to disable `forceLegacyJavacApi`. This provides the following output: ``` [INFO] --- maven-compiler-plugin:3.13.0:compile (default-compile) @ ... --- [INFO] Recompiling the module because of changed dependency. [INFO] Compiling 190 source files with javac [debug release 21] to target/classes [INFO] Annotation processing is enabled because one or more processors were found on the class path. A future release of javac may disable annotation processing unless at least one processor is specified by name (-processor), or a search path is specified (--processor-path, --processor-module-path), or annotation processing is enabled explicitly (-proc:only, -proc:full). Use -Xlint:-options to suppress this message. Use -proc:none to disable annotation processing. [INFO] ------------------------------------------------------------- [WARNING] COMPILATION WARNING : [INFO] ------------------------------------------------------------- [WARNING] Cannot find annotation method 'value()' in type 'aQute.bnd.annotation.baseline.BaselineIgnore': class file for aQute.bnd.annotation.baseline.BaselineIgnore not found [WARNING] Cannot find annotation method 'value()' in type 'aQute.bnd.annotation.baseline.BaselineIgnore': class file for aQute.bnd.annotation.baseline.BaselineIgnore not found [INFO] 2 warnings [INFO] ------------------------------------------------------------- [INFO] ------------------------------------------------------------- [ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] warnings found and -Werror specified [INFO] 1 error [INFO] ------------------------------------------------------------- [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary for ... [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 20.303 s [INFO] Finished at: 2025-01-02T17:58:54-05:00 [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile (default-compile) on project ...: Compilation failure [ERROR] warnings found and -Werror specified ``` That leads to a solution to the problem, which is adding ``` <dependency> <groupId>biz.aQute.bnd</groupId> <artifactId>biz.aQute.bnd.annotation</artifactId> <version>7.1.0</version> <scope>compile</scope> </dependency> ``` Expected behavior: ```<forceLegacyJavacApi>true</forceLegacyJavacApi>``` shouldn't lead to omitting important information needed to investigate the compilation failure. > forceLegacyJavacApi=true omits important warning logs > ----------------------------------------------------- > > Key: MNG-8480 > URL: https://issues.apache.org/jira/browse/MNG-8480 > Project: Maven > Issue Type: Bug > Components: Errors > Affects Versions: 3.8.8 > Environment: Apache Maven 3.8.8 > maven-compiler-plugin:3.13.0 > JDK 21.0.5 > Reporter: Dmitry Spikhalskiy > Priority: Major > > h2. Current behavior > Specifying forceLegacyJavacApi=true omits important warning logs that may > lead to tricky to-investigate states. > h2. Expected behavior > ```<forceLegacyJavacApi>true</forceLegacyJavacApi>``` > shouldn't lead to omitting important information needed to investigate the > compilation failure. > h2. Context > Our project uses log4j2 that recently got OSGI-related refinements: > [https://logging.apache.org/log4j/2.x/release-notes.html#release-notes-2-22-0] > Our maven-compiler-plugin is configured as follows: > ``` > <configuration> > <forceLegacyJavacApi>true</forceLegacyJavacApi> > <showWarnings>true</showWarnings> > <failOnWarning>true</failOnWarning> > <compilerArgs> > <!-- compiling linter --> > <arg>-Xlint:all</arg> > </compilerArgs> > </configuration> > ``` > After log4j2 upgrade, the project compilation fails with no helpful > diagnostic: > > ``` > [INFO] — maven-compiler-plugin:3.13.0:compile (default-compile) @ ... — > [INFO] Recompiling the module because of changed dependency. > [INFO] Compiling 190 source files with javac [debug release 21] to > target/classes > [INFO] > ------------------------------------------------------------------------ > [INFO] Reactor Summary for ... > [INFO] > ------------------------------------------------------------------------ > [INFO] BUILD FAILURE > [INFO] > ------------------------------------------------------------------------ > [INFO] Total time: 19.421 s > [INFO] Finished at: 2025-01-02T17:41:59-05:00 > [INFO] > ------------------------------------------------------------------------ > [ERROR] Failed to execute goal > org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile > (default-compile) on project ...: Compilation failure -> [Help 1] > [ERROR] > [ERROR] To see the full stack trace of the errors, re-run Maven with the -e > switch. > ``` > `-e` provides a stacktrace that doesn't lead to a rootcause. > > To find the root cause, we need to disable `forceLegacyJavacApi`. This > provides the following output: > > ``` > [INFO] — maven-compiler-plugin:3.13.0:compile (default-compile) @ ... — > [INFO] Recompiling the module because of changed dependency. > [INFO] Compiling 190 source files with javac [debug release 21] to > target/classes > [INFO] Annotation processing is enabled because one or more processors were > found > on the class path. A future release of javac may disable annotation > processing > unless at least one processor is specified by name (-processor), or a search > path is specified (--processor-path, --processor-module-path), or annotation > processing is enabled explicitly (-proc:only, -proc:full). > Use -Xlint:-options to suppress this message. > Use -proc:none to disable annotation processing. > [INFO] ------------------------------------------------------------- > [WARNING] COMPILATION WARNING : > [INFO] ------------------------------------------------------------- > [WARNING] Cannot find annotation method 'value()' in type > 'aQute.bnd.annotation.baseline.BaselineIgnore': class file for > aQute.bnd.annotation.baseline.BaselineIgnore not found > [WARNING] Cannot find annotation method 'value()' in type > 'aQute.bnd.annotation.baseline.BaselineIgnore': class file for > aQute.bnd.annotation.baseline.BaselineIgnore not found > [INFO] 2 warnings > [INFO] ------------------------------------------------------------- > [INFO] ------------------------------------------------------------- > [ERROR] COMPILATION ERROR : > [INFO] ------------------------------------------------------------- > [ERROR] warnings found and -Werror specified > [INFO] 1 error > [INFO] ------------------------------------------------------------- > [INFO] > ------------------------------------------------------------------------ > [INFO] Reactor Summary for ... > [INFO] > ------------------------------------------------------------------------ > [INFO] BUILD FAILURE > [INFO] > ------------------------------------------------------------------------ > [INFO] Total time: 20.303 s > [INFO] Finished at: 2025-01-02T17:58:54-05:00 > [INFO] > ------------------------------------------------------------------------ > [ERROR] Failed to execute goal > org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile > (default-compile) on project ...: Compilation failure > [ERROR] warnings found and -Werror specified > ``` > That leads to a solution to the problem, which is adding > > ``` > <dependency> > <groupId>biz.aQute.bnd</groupId> > <artifactId>biz.aQute.bnd.annotation</artifactId> > <version>7.1.0</version> > <scope>compile</scope> > </dependency> > ``` > > Expected behavior: > > > > > -- This message was sent by Atlassian Jira (v8.20.10#820010)