【问题标题】:Using Java 1.7 without maven-compiler-plugin在没有 maven-compiler-plugin 的情况下使用 Java 1.7
【发布时间】:2013-12-14 17:29:23
【问题描述】:

有什么方法可以强制 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,供应商:甲骨文公司

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)?

【问题讨论】:

    标签: java linux maven linux-mint


    【解决方案1】:

    问题是有没有办法配置 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。

    【讨论】:

      【解决方案2】:

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

      mvn -Dmaven.compiler.target=1.7 compile
      

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

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

      【讨论】:

      • 即使这样 OP 也会使用 maven-compiler-plugin,所以我看不到(支持的)方法。
      • 严格来说,你是对的;但我认为 OP 想避免配置插件,无论出于何种原因......
      • 是的,可能是这样。或者,准确地说,想要避免在 pom 中配置插件 - 您也在此处配置它,只是通过命令行。
      • 你说得对,我表达得很糟糕。我想避免在 pom.xml 中配置插件。这样做的原因是我正在开发一个包含 30 多个 pom 的应用程序。这将是一个很大的开销。
      【解决方案3】:

      基于http://maven.apache.org/plugins/maven-compiler-plugin/testCompile-mojo.html,您可以通过在命令行中设置属性 maven.compiler.target 和 maven.compiler.source 来设置这些属性,而无需“污染”您的 pom.xml 文件。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-24
        • 2012-09-25
        • 2012-07-06
        • 1970-01-01
        相关资源
        最近更新 更多