Le paramètre --illegal-access=permit
est nécessaire à cause des modules de Java 9 qui font qu'une classe d'un package A dans un jar A ne peut plus accéder aux classes non exportées d'un package B dans un jar B.
Or Surefire procédant au scanne du classpath pour charger via API réflexion toutes les classes suffixées par Test et y exécuter toutes les méthodes annotées par @Test, il viole alors l'accès restreint des modules de notre code. Donc mécaniquement, et si l'on veut exécuter des TU, il faut lever la restriction via ce paramètre.
N.B : ce problème ne touche pas que Surefire mais également tous les frameworks s'appuyant sur l'API réflexion (coucou Spring Boot).
Comme je dois assurer la montée de version d'application Oracle Java 8 vers OpenJDK 11 (hotspot) je relis la documentation trouvable sur le web.
Ce que je retiens :
1) Les plugins Maven de tests (surfire & failsafe) qui font un usage intensif de l'API réflection doivent avoir cette ligne ajoutée à leur configuration :
<configuration>
<argLine>--illegal-access=permit</argLine>
<configuration>
2) Le maven-compiler-plugin
n'a plus les balises <source>
et <target>
, elles sont remplacées par l'attribut <release>11/<release>
(on passe aussi de la nomenclature 1.8 à 9/10/11.