105 votes

Comment puis-je déterminer et changer la version de Java que Maven utilise pour s'exécuter?

Lors de l'exécution de notre build Maven, un membre de mon équipe obtient une NoSuchMethodError dans l'un des plug-ins dépendants lors de l'exécution. Cependant, lorsque nous exécutons java -version à partir de sa ligne de commande, cela indique Java 1.6.0_26. L'erreur semble évidemment indiquer que Maven utilise Java 5.

Comment puis-je déterminer et modifier la version de Java utilisée par Maven?

3 notes potentiellement importantes:

  1. Ceci est exécuté en ligne de commande, sans utiliser le plugin Eclipse
  2. JAVA_HOME est défini sur un JDK Java 1.6
  3. Utilisation de Maven 2.2.1

165voto

Ryan Stewart Points 46960

mvn -version affichera la version de Java qu'il utilise. Si JAVA_HOME est défini sur un répertoire JDK valide et que Maven utilise autre chose, il est très probable que quelqu'un ait altéré la façon dont Maven démarre.

14voto

Alexander Pogrebnyak Points 24964

Vous devrez configurer maven-compiler-plugin pour utiliser les paramètres source et target 1.6 (par défaut, c'est 1.5).

Le mieux est de le faire dans la section du pom parent de votre projet (mais vous pouvez bien sûr le configurer par projet individuel également).

          org.apache.maven.plugins
          maven-compiler-plugin
          2.3.2

            1.6
            1.6

3voto

nobar Points 5849

mvn -version vous indique quel compilateur Maven utilise, donc cela répond à la question sauf si votre POM spécifie des valeurs de remplacement pour les versions à utiliser.

Voici la manière la plus simple de spécifier les remplacements dans pom.xml:

    1.9
    1.9

Alternativement, le maven-compiler-plugin peut être spécifié de manière plus explicite. Dans ce cas, regardez les valeurs et associées au plugin.

Les deux options sont décrites ici.

Si votre POM a un , alors vous devez aussi vérifier cela (de manière récursive).

Remarque : Lorsque source et target sont spécifiés, ces valeurs sont passées en tant qu'options en ligne de commande au compilateur. En utilisant cette fonctionnalité, vous pouvez compiler ou exécuter sur des versions antérieures de Java que la valeur nominale du compilateur.

1voto

Eric Points 41

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