You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@logging.apache.org by "Matt Sicker (Jira)" <ji...@apache.org> on 2020/09/14 16:41:00 UTC
[jira] [Created] (LOG4J2-2922) Simplify Java compiler build
requirements
Matt Sicker created LOG4J2-2922:
-----------------------------------
Summary: Simplify Java compiler build requirements
Key: LOG4J2-2922
URL: https://issues.apache.org/jira/browse/LOG4J2-2922
Project: Log4j 2
Issue Type: Improvement
Components: Build
Reporter: Matt Sicker
The current toolchain setup requires either two or three versions of the JDK plus a toolchains.xml Maven configuration. While this setup was sufficient to introduce support for Java 9+ APIs, it has made development slower and more difficult. Some problems include:
* Any module that depends on a java9 piece breaks incremental compilation; Maven recompiles the entire module every time! This makes it tedious to use {{mvn test}} on individual tests.
* IDEs have difficulty importing and executing toolchain-based Maven projects
* Contributors have a fairly esoteric hurdle to jump over now to contribute to Log4j
* As Java continues its release cadence of two releases a year, this makes it harder to test or develop Log4j on newer JDKs. This has become a more obvious problem ever since IDEs like IntelliJ switched from Java 8 to Java 11 as the default JDK.
To improve this situation, I propose the following build changes to simplify the scenario:
* Require Java 11 to compile everything.
* Introduce the animal-sniffer and enforcer Maven plugins to ensure that modules aren't unintentionally using or linking to Java APIs added in versions 9+
* Fix log4j-jmx-gui to use the jdk.jconsole module instead of linking to tools.jar from the JDK.
* Find a better multirelease pattern as documented here: [https://maven.apache.org/plugins/maven-compiler-plugin/multirelease.html]
This should result in a build that creates Java 8 compatible artifacts but requires Java 11 and only Java 11 to build, therefore significantly simplifying development environment setup for this project.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)