Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Maven doesn't use Java 7

I want to package a maven-(multi)module, the parent POM includes:

<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> 

I'm using Java 1.7 and the properties are specified as follows:

<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> 

The Maven version is 2.2.1:

johannes@luna:~/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" 

I have no clue why it doesn't use Java version 1.7. When invoking mvn package I get the error (use -source 7 or higher to enable diamond operator) for instance. Do you know why it tries using 1.6?

The effective POM is:

  <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> 
like image 571
Johannes Avatar asked Jan 05 '12 22:01

Johannes


2 Answers

This may not work in maven 2.2.1, but with Maven 3.0.4, simply adding the two properties to the pom's properties enables Java 7 for me:

<properties>   <maven.compiler.source>1.7</maven.compiler.source>   <maven.compiler.target>1.7</maven.compiler.target> </properties> 
like image 167
Stan Kurdziel Avatar answered Sep 21 '22 19:09

Stan Kurdziel


perfectly nice explanation on the compatibility issue of jdk 1.7 with maven 2.2.1 given by Mark Peters Maven "could not parse error message" (Java 7 + Maven 2)

like image 23
demesne Avatar answered Sep 19 '22 19:09

demesne