我试图建立一些maven项目。它失败了因为maven使用了较旧的java 1.3,而且项目正在使用泛型。我知道我可以覆盖maven-compiler-plugin版本以及源和目标,但这不是重点。
重现的步骤
$ git clone https://github.com/DuLerWeil/netty-diameter && cd netty-diameter
$ mvn help:effective-pom
...
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<executions>
<execution>
<id>default-testCompile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
<execution>
<id>default-compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
我的设置:
$ mvn -v
Apache Maven 3.0.5
Maven home: /usr/share/maven
Java version: 1.7.0_72, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-7-oracle/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.16.0-28-generic", arch: "amd64", family: "unix"
$ printenv JAVA_HOME
/usr/lib/jvm/java-7-oracle
$ readlink -f $(type -p java)
/usr/lib/jvm/java-7-oracle/jre/bin/java
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.10
Release: 14.10
Codename: utopic
答案 0 :(得分:0)
您的JAVA_HOME需要指向JDK而不是JRE。 JDK是Java开发环境,只有这个包含javac可执行文件(编译器)。 maven编译器插件使用javac编译器 - 它本身不是编译器。
编译器插件也有一些配置来定义java版本。见&#34;来源&#34;和&#34;目标&#34;在 http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html
可以在此处找到一个用法示例:http://maven.apache.org/plugins/maven-compiler-plugin/usage.html - 您可以删除执行配置 - 因为它看起来像默认值。