2 votes

La compilation Maven de mon code source Java 8 échoue

Sur mon Mac, j'essaie de compiler un code source Java 8 que j'ai écrit. Il se compile bien dans Eclipse, mais dans Maven, la compilation échoue.

Je reçois plusieurs erreurs de la forme :

[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /Users/admin/eclipse/workspaces/default/Java8/src/main/java/language/utilities/MapDemo.java:[14,33] lambda expressions are not supported in -source 1.7
  (use -source 8 or higher to enable lambda expressions)

En exécutant mvn -v, on obtient :

Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T16:41:47+00:00)
Maven home: /Users/admin/apache-maven-3.3.9
Java version: 1.8.0_91, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre
Default locale: en_IE, platform encoding: UTF-8
OS name: "mac os x", version: "10.12", arch: "x86_64", family: "mac"

L'exécution de la commande d'exportation montre que la variable JAVA_HOME est définie sur :

JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home"

Qu'est-ce que cette propriété '-source' ? Pourquoi dois-je la définir si ma version de Java est Java 8 ?

4voto

Peter Rader Points 3995

Définir

<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>

dans le propriétés de votre pom .

Vous ne devez pas définir ce paramètre dans le settings.xml parce que vous forcez d'autres personnes à changer leur settings.xml et utiliser par défaut le JDK8 dans tous leurs autres projets !

2voto

Nicolas Filotto Points 32004

Vous devez configurer votre plugin maven-compiler-plugin pour définir le source et cible la version que vous voulez utiliser

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
    </configuration>
</plugin>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X