Nous sommes en train de migrer nos projets java 8 vers java 11. JAVA_HOME pointe toujours vers java 8 mais le premier projet à migrer se compile en java 11 et les tests unitaires fonctionnent parfaitement.
Le plugin maven-compiler et la chaîne d'outils sont définis comme suit cette question . La version de Maven est 3.5.0.
Quand j'exécute
mvn verify
Je reçois l'erreur suivante :
Failed to execute goal org.apache.maven.plugins:maven-pmd-plugin:3.11.0:
pmd (pmd) on project <yourproject>:
Execution pmd of goal org.apache.maven.plugins:maven-pmd-plugin:3.11.0:
pmd failed: An API incompatibility was encountered while executing
org.apache.maven.plugins:maven-pmd-plugin:3.11.0:pmd:
java.lang.UnsupportedClassVersionError:
<Yourclass> has been compiled by a more recent version of the Java Runtime
(class file version 55.0), this version of the Java Runtime only recognizes
class file versions up to 52.0 //(indentation added for readability)
Je comprends que les classes ont été compilées en utilisant java 11 (comme prévu) et que maven fonctionne sur java 8 parce que c'est ce vers quoi JAVA_HOME pointe. Mais pourquoi cela fait-il trébucher le pmd-plugin ? Il est censé vérifier le code source, sans tenir compte des classes compilées.
Existe-t-il un moyen de contourner ce problème, à moins de définir JAVA_HOME à 11 ?