首页 文章

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

提问于
浏览
2

有没有什么办法可以强制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 回答

  • 0

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

    mvn -Dmaven.compiler.target=1.7 compile
    

    但我认为这是一个反模式,因为这会使您的构建依赖于必须记录的其他参数 . 在某些父pom中定义正确的配置会更好 .

    有关maven-compiler-plugin的完整说明,请参阅compiler:compile

  • 2

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

    有一种方法,那就是配置maven-compiler-plugin . 这就是Maven用于编译的内容,因此您需要配置 .

    如果您坚持使用javac,请参阅maven compiler plugin manual says

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

    但即使在这种情况下,它也将是关于配置maven-compiler-plugin .

  • 4

    基于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行中添加这两个属性 .

相关问题