]> source.dussan.org Git - aspectj.git/commit
Make all tests run on Java 16 via '-add-opens' JVM option java16-add-opens
authorAlexander Kriegisch <Alexander@Kriegisch.name>
Tue, 23 Mar 2021 09:59:17 +0000 (16:59 +0700)
committerAlexander Kriegisch <Alexander@Kriegisch.name>
Tue, 23 Mar 2021 11:36:14 +0000 (18:36 +0700)
commit79e44360cd95b14fa255daaac069f9b76c488451
treee8a0204bd324beec3513768a6e5a83f4137b78ce
parent6be777e71708df5a62e41c6ef95da66bfd02f447
Make all tests run on Java 16 via '-add-opens' JVM option

Due to JEP 260 (Encapsulate Most Internal APIs), aspect weaving on
Java 16 now requires '--add-opens java.base/java.lang=ALL-UNNAMED' on
the command line. Otherwise there will be illegal access exceptions for
some internal API calls AspectJ needs, most prominently when trying to
define classes in other packages or modules.

This had to be done on several levels:

  - Maven Surefire: running tests in a JVM directly forked by Surefire.
    In order to make this backwards compatible, I added two profiles
    with JDK-level-dependent auto-activation, one 8-15 and one 16+. In
    the latter a property containing the JVM parameter is defined, in
    the former it is empty, i.e. the JVM is started without the
    parameter. In Java 8 the parameter did not even exist, in Java 9+ we
    could use it, but we need to test how users use AspectJ.

  - RunSpec: Whenever an XML test is declared to use '<run>', we need to
    determine the current JVM version and again dynamically add the
    parameter when forking the target JVM.

  - AntSpec: Whenever an XML test is declared to use '<ant>', we need to
    determine the current JVM version dynamically add two properties
    usable from within Ant scripts: 'aj.addOpensKey' and
    'aj.addOpensValue'. Unfortunately, Ant needs to use two '<argLine>'
    parameters, because the two parts of the option are separated by a
    space character.

  - Ant scripts: When triggered by an AntSpec, each Ant target using LTW
    needs to manually set
      <jvmarg value="${aj.addOpensKey}"/>
      <jvmarg value="${aj.addOpensValue}"/>
    for each '<java>' task. It was quite tedious to find all(?) of them.

TODO: In the AspectJ 1.9.7 release notes we need to document that this
parameter is now needed for LTW.

Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
15 files changed:
pom.xml
run-all-junit-tests/pom.xml
testing-drivers/pom.xml
testing/src/test/java/org/aspectj/testing/AntSpec.java
testing/src/test/java/org/aspectj/testing/RunSpec.java
tests/bugs153/pr155033/ant.xml
tests/bugs153/pr157474/ant-server.xml
tests/bugs153/pr158957/ant.xml
tests/java5/ataspectj/ajc-ant.xml
tests/ltw/ant-server.xml
tests/ltw/ant.xml
tests/pom.xml
tests/profiling/build.xml
tests/src/test/java/org/aspectj/systemtest/ajc167/Ajc167Tests.java
tests/tracing/ant.xml