2012-01-05 20 views
49

quiero empaquetar una maven- (multi) módulo, el POM padres incluye:Maven no utiliza Java 7

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.3.2</version> 
    <configuration> 
    <source>${maven.compiler.source}</source> 
    <target>${maven.compiler.target}</target> 
    <encoding>${project.build.sourceEncoding}</encoding> 
    </configuration> 
</plugin> 

estoy usando Java 1.7 y las propiedades se especifican como sigue:

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <maven.compiler.source>1.7</maven.compiler.source> 
    <maven.compiler.target>1.7</maven.compiler.target> 
    <slf4j.version>1.6.1</slf4j.version> 
</properties> 

La versión 2.2.1 es Maven:

[email protected]:~/workspace/treetank/bundles/treetank-core$ mvn -version 
Apache Maven 2.2.1 (rdebian-6) 
Java version: 1.7.0 
Java home: /usr/lib/jvm/jdk1.7.0/jre 
Default locale: en_US, platform encoding: UTF-8 
OS name: "linux" version: "3.0.0-14-generic" arch: "amd64" Family: "unix" 

no tengo ni idea de por qué no usa Java versión 1.7. Al invocar mvn package obtengo el error (por ejemplo, uso de la fuente 7 o superior para habilitar el operador de diamante). ¿Sabes por qué trata de usar 1.6?

El POM es efectiva:

<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.3.2</version> 
    <executions> 
     <execution> 
     <id>default-testCompile</id> 
     <phase>test-compile</phase> 
     <goals> 
      <goal>testCompile</goal> 
     </goals> 
     <configuration> 
      <source>1.7</source> 
      <target>1.7</target> 
      <encoding>UTF-8</encoding> 
     </configuration> 
     </execution> 
     <execution> 
     <id>default-compile</id> 
     <phase>compile</phase> 
     <goals> 
      <goal>compile</goal> 
     </goals> 
     <configuration> 
      <source>1.7</source> 
      <target>1.7</target> 
      <encoding>UTF-8</encoding> 
     </configuration> 
     </execution> 
    </executions> 
    <configuration> 
     <source>1.7</source> 
     <target>1.7</target> 
     <encoding>UTF-8</encoding> 
    </configuration> 
    </plugin> 
+0

Funciona para mí en un proyecto maven simple en RHEL5. El texto de error que obtengo al compilar 1.7 fuente con 1.6 también es diferente - 'diamond operator no es compatible con -source 1.6' – Raghuram

Respuesta

120

Esto no puede trabajar en Maven 2.2.1 , pero con Maven 3.0.4, simplemente agregando las dos propiedades a las propiedades del pom, habilito Java 7 para mí:

<properties> 
    <maven.compiler.source>1.7</maven.compiler.source> 
    <maven.compiler.target>1.7</maven.compiler.target> 
</properties> 
+2

Mi proyecto estaba compilando bien, pero de alguna forma se agregó una carpeta src al pom.xml estableciendo explícitamente esos dos propiedades a 1.6 solo para esa carpeta en particular, lo que dificultó la localización. –

+1

No ha ayudado :( – Pasha

+0

No funciona en eclipse. – Wuaner