Openbravo Issue Tracking System - Openbravo ERP
View Issue Details
0054486Openbravo ERPA. Platformpublic2024-01-24 13:372024-03-04 14:32
shuehner 
Triage Platform Base 
normalminorhave not tried
closedfixed 
5
 
PR24Q1.1PR24Q1.1 
Core
No
0054486: Avoid compiler warning about implicit annotation processing by disabling it using -proc:none
Until Java<21 the java compiler implicitely looked for and ran any annotation processor found on the classpath.

Since Java21 the following warning is shown to inform users about upcoming change.

    [javac] Note: Annotation processing is enabled because one or more processors were found
    [javac] on the class path. A future release of javac may disable annotation processing
    [javac] unless at least one processor is specified by name (-processor), or a search
    [javac] path is specified (--processor-path, --processor-module-path), or annotation
    [javac] processing is enabled explicitly (-proc:only, -proc:full).
    [javac] Use -Xlint:-options to suppress this message.
    [javac] Use -proc:none to disable annotation processing.

Upstream intention/recommendation instead is to explicitely specify/configure annotation processing by the build tool.
However a "compatibility option" -proc:full was added to keep using the "old default policy"

Running compile with jdk-21
Not knowingly needing any annotation processing idea is to explicitely disable it using -proc:none
If usage should show up later it is better to explicitely notice this (i.e. in CI) and then work on properly supporting that.
No tags attached.
blocks feature request 0054452 closed Triage Platform Base Avoid compiler warning about implicit annotation processing by disabling it using -proc:none 
Issue History
2024-01-29 10:52shuehnerTypefeature request => backport
2024-01-29 10:52shuehnerTarget Version => PR24Q1
2024-02-05 15:10hgbotNote Added: 0160262
2024-02-13 13:50AugustoMauchTarget VersionPR24Q1 => PR24Q1.1
2024-03-04 14:32hgbotResolutionopen => fixed
2024-03-04 14:32hgbotStatusscheduled => closed
2024-03-04 14:32hgbotFixed in Version => PR24Q1.1
2024-03-04 14:32hgbotNote Added: 0161623
2024-03-04 14:32hgbotNote Added: 0161624

Notes
(0160262)
hgbot   
2024-02-05 15:10   
Merge Request created: https://gitlab.com/openbravo/product/openbravo/-/merge_requests/1126 [^]
(0161623)
hgbot   
2024-03-04 14:32   
Directly closing issue as related merge request is already approved.

Repository: https://gitlab.com/openbravo/product/openbravo [^]
Changeset: c8e33b7bff73cd1e1fd251c899a62166afa03c4e
Author: Stefan Huehner <stefan.huehner@openbravo.com>
Date: 04-03-2024 13:31:24
URL: https://gitlab.com/openbravo/product/openbravo/-/commit/c8e33b7bff73cd1e1fd251c899a62166afa03c4e [^]

Fixed ISSUE-54486: Disable annotation processing with -proc:none to avoid warnings

Until Java<21 the java compiler implicitely looked for and ran any
annotation processor found on the classpath.
Since Java21 the following warning is shown to inform users about upcoming change of
default for this policy.

    [javac] Note: Annotation processing is enabled because one or more processors were found
    [javac] on the class path. A future release of javac may disable annotation processing
    [javac] unless at least one processor is specified by name (-processor), or a search
    [javac] path is specified (--processor-path, --processor-module-path), or annotation
    [javac] processing is enabled explicitly (-proc:only, -proc:full).
    [javac] Use -Xlint:-options to suppress this message.
    [javac] Use -proc:none to disable annotation processing.

- Add a new ant property javac.proc to specify value to be used via
  <compilerarg line> for all our various javac invocations
- For the value use -proc:none to explicitely disable annotation processing
  during compilation
  <compilearg line> was chosne as <compiler arg> value run into some
  cornercase issues in case value was empty.
- Reasoning:
  - Upstream recommends to explcitely specify and control annotation
    processors instead of them being 'found' implicitely
    https://github.com/openjdk/jdk/pull/14432#issuecomment-1714598354 [^]
  - Checking all jar libraries in mods/pmods (if they ship a
    META-INF/avax.annotation.processing.Processor) file found 1 single library
    shipping an annotation processor: log4j for its plugin system
    - However we do not use any shipped extra plugin
  - We have a few custom plugins ourself in src-test having @Plugin
    - Annotation processing was running before for those as shown on
      compile output
    [javac] Note: Processing Log4j annotations
    [javac] Note: Annotations processed
  - However not running it seems to have no impact on the functionality
    - Tested via existing DalTest which assert's on output of content of
      testLogAppender configured via those plugins

---
M build.xml
M src-core/build.xml
M src-test/build.xml
M src-trl/build.xml
M src-util/buildvalidation/build.xml
M src-util/modulescript/build.xml
M src-wad/build.xml
M src/build.xml
---
(0161624)
hgbot   
2024-03-04 14:32   
Merge request merged: https://gitlab.com/openbravo/product/openbravo/-/merge_requests/1126 [^]