2011-08-11 101 views
28

Al ejecutar nuestra compilación Maven, un miembro de mi equipo recibe el error this al ejecutar. Sin embargo, cuando ejecutamos java -version desde su línea de comandos, indica Java 1.6.0_26. El error obviamente parece estar gritando que Maven está usando Java 5.¿Cómo averiguo y cambio qué versión de Java Maven está utilizando para ejecutar?

¿Cómo averiguo y cambio qué versión de Java está utilizando Maven?

notas

3 potencialmente importantes:

  1. Esto se ejecuta en la línea de comandos, no usando el plugin de Eclipse
  2. JAVA_HOME se establece en un 1,6 JDK de Java
  3. El uso de Maven 2.2.1
+0

Seems JDK 1.6.0_26 se utiliza para compilar su fuente con 1.5. ¡Esto es posible! –

+4

eek! :("este error" se ha roto el enlace – Barett

Respuesta

54

mvn -version saldrá que java está usando. Si JAVA_HOME está establecido en un directorio JDK válido y Maven está utilizando algo más, entonces lo más probable es que alguien haya manipulado la forma en que Maven se inicia.

+1

Puede definir el Java que se utilizará con maven. Consulte el hilo: http: // stackoverflow.com/questions/18813828/why-maven-use-jdk-1-6-but-my-java-version-is-1-7 –

7

Deberá configurar maven-compiler-plugin para usar los parámetros 1.6 source y target (de forma predeterminada es 1.5).

Este es el mejor hecho en el pom padre de su proyecto en la sección <pluginManagment> (pero siempre puede configurarlo por proyectos individuales, por supuesto).

<build> 

    <pluginManagement> 
     <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
      <source>1.6</source> 
      <target>1.6</target> 

      </configuration> 
     </plugin> 
     </plugins> 
    </pluginManagement> 
    </build> 
1

mvn -version te dice lo que Maven compilador está utilizando, por lo que este responde a la pregunta menos que el POM especifica valores de reemplazo para las versiones que se utilizarán.

Aquí es la forma más fácil de especificar las sustituciones en pom.xml:

<properties> 
    <maven.compiler.target>1.9</maven.compiler.target> 
    <maven.compiler.source>1.9</maven.compiler.source> 
</properties> 

Alternativamente, el maven-compiler-plugin se puede especificar de manera más explícita. En ese caso, observe los valores <source> y <target> asociados con el complemento.

Ambas opciones se describen here.

Si su POM tiene un <parent>, entonces debe comprobarlo también (recursivamente).

Nota: Cuando se especifican source y target, estos valores se pasan como opciones de línea de comandos para el compilador. Usando esta característica, puede compilar o ejecutar contra versiones anteriores de Java que el valor nominal del compilador.

+0

Un ejemplo de cómo configurar el * compilador * si no desea simplemente use 'javac' de su ruta:' JAVA_HOME =/usr/lib/jvm/java-8-openjdk-amd64 mvn clean install'. Su kilometraje puede variar en términos de cómo/cuándo esto puede ser anulado bajo Maven. – nobar

+0

Como último control de cordura, puede preguntar 'javac' /' java' desde dentro del entorno de compilación estableciendo los parámetros de compilación para agregar '-version' al argumento de la línea de comandos, similar a [aquí] (https://stackoverflow.com/a/25079415/86967) (para Gradle). – nobar

Cuestiones relacionadas