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

Michael Osipov commented on MNG-8480:
-------------------------------------

This is compiler plugin, no clue, never worked on.

> 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|https://logging.apache.org/log4j/2.x/release-notes.html#release-notes-2-22-0]
>  got OSGI-related refinements ([relevant 
> discussion|https://github.com/apache/logging-log4j2/issues/3110]).
> Our maven-compiler-plugin is configured as follows:
> {code:xml}
> <configuration>
>     <forceLegacyJavacApi>true</forceLegacyJavacApi>
>     <showWarnings>true</showWarnings>
>     <failOnWarning>true</failOnWarning>
>     <fork>false</fork>
>     <compilerArgs>
>         <!-- important for reproduction -->
>         <arg>-Xlint:all</arg>
>     </compilerArgs>
> </configuration>{code}
> After log4j2 upgrade, the project compilation fails with no helpful 
> diagnostic:
> {code:java}
> [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.
> {code}
>  
> `-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:
> {code:java}
> [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{code}
>  
> That leads to a solution to the problem, which is adding
> {code:xml}
> <dependency>
>     <groupId>biz.aQute.bnd</groupId>
>     <artifactId>biz.aQute.bnd.annotation</artifactId>
>     <version>7.1.0</version>
>     <scope>compile</scope>
> </dependency>{code}



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

Reply via email to