有没有什么办法可以强制maven使用java 1.7标准编译而不使用maven-compiler-plugin?我已经读过JAVA_HOME没有正确设置,但我不认为是这种情况 . 我在mvn脚本中添加了以下行:
echo $JAVA_HOME
下面是mvn --version的输出
Apache Maven 3.0.4 Maven主页:/ usr / share / maven Java版本:1.7.0_45,供应商:Oracle Corporation Java主页:/ 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 .
问题是有没有办法配置maven tu使用java 1.7(类似于javac -target 1.7)?
3 回答
您可以通过在调用maven时传递适当的
-D...
参数来配置编译器插件 . 在你的情况下,这可能是但我认为这是一个反模式,因为这会使您的构建依赖于必须记录的其他参数 . 在某些父pom中定义正确的配置会更好 .
有关maven-compiler-plugin的完整说明,请参阅compiler:compile
有一种方法,那就是配置maven-compiler-plugin . 这就是Maven用于编译的内容,因此您需要配置 .
如果您坚持使用javac,请参阅maven compiler plugin manual says:
但即使在这种情况下,它也将是关于配置maven-compiler-plugin .
基于http://maven.apache.org/plugins/maven-compiler-plugin/testCompile-mojo.html,看起来您可以通过在命令行中设置属性maven.compiler.target和maven.compiler.source来设置这些属性而无需"poluting"您的pom.xml文件 .
所以,像下面这样的命令可以解决你的问题 . mvn install -Dmaven.compiler.target = 1.7 -Dmaven.compiler.source = 1.7
这些属性的默认版本是1.5 . 您还可以修改mvn脚本并在exec行中添加这两个属性 .