有没有什么办法可以强制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
- 从所有JVM中获取所有Java类的列表?
- 在java远程linux机器上运行进程(命令)
- 从文件中删除重复的行
- 确定父进程是否是terminal
- Oracle Service Bus maven的构build时间在Linux上比在Windows上慢30倍
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行中添加这两个属性。