使用Java 1.7而不使用Maven-compiler-plugin

有没有什么办法可以强制maven使用java 1.7标准编译而不使用maven-compiler-plugin? 我已经阅读了关于JAVA_HOME设置不正确,但我不认为这是事实。 我在mvn脚本中添加了以下行:

echo $JAVA_HOME 

以下是mvn –version的输出

Apache Maven 3.0.4

Maven home:/ usr / share / maven

Java版本:1.7.0_45,供应商:甲骨文公司

Java home:/ usr / lib / jvm / java-7-oracle / jre

默认语言环境:en_US,平台编码:UTF-8

操作系统名称:“linux”,版本:“3.11.0-12-generic”,arch:“i386”,系列:“unix”

一个问题是$ JAVA_HOME被设置为/ usr / lib / jvn / java-7-oracle,而manven报告为$ JAVA_HOME / jre。

问题是有没有办法configurationmaven tu使用java 1.7(类似于javac -target 1.7)?

您可以在调用maven时通过传递相应的-D...参数来配置编译器插件。 在你的情况下,这可能是

 mvn -Dmaven.compiler.target=1.7 compile 

但我认为这是一个反模式,因为这使得你的构建依赖于必须记录的附加参数。 在某些父类中定义一个适当的配置是更好的方法。

请参阅编译器:编译 maven-compiler-plugin的完整描述

问题是有没有办法配置maven tu使用java 1.7(类似于javac -target 1.7)?

有一种方法,那就是通过配置maven-compiler-plugin。 这就是Maven用来编译的东西,所以这就是你需要配置的东西。

如果您坚持使用javac,请参阅maven编译器插件手册所说的内容 :

从3.0开始,默认编译器是javax.tools.JavaCompiler(如果您使用的是Java 1.6),并且用于编译Java源代码。 如果你想强制插件使用javac,你必须配置插件选项forceJavacCompilerUse。

但即使在这种情况下,它也将配置maven-compiler-plugin。

基于http://maven.apache.org/plugins/maven-compiler-plugin/testCompile-mojo.html ,它看起来像你可以设置这些属性可以设置没有“污染”你的pom.xml文件设置在命令行的属性maven.compiler.target和maven.compiler.source。

所以,像下面的命令应该解决你的问题。 mvn install -Dmaven.compiler.target = 1.7 -Dmaven.compiler.source = 1.7

这些属性的默认版本是1.5。 您还可以修改mvn脚本,并在exec行中添加这两个属性。