【问题标题】:Where is the JDK version to be used by Maven compiler specified?Maven编译器要使用的JDK版本在哪里指定?
【发布时间】:2012-03-07 14:46:24
【问题描述】:

当我没有在我的 pom.xml 文件中定义如下内容时,它在我的系统上为 Maven 定义了在编译时使用哪个版本的 Java JDK(我的系统上安装了多个版本,JAVA_HOME 点其中之一)?

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.5</source>
                <target>1.5</target>
            </configuration>
        </plugin>
    </plugins>
</build>

【问题讨论】:

  • 我仍然看到建议的解决方案存在问题。在我的用例中,我安装了 JDk1.8 并克隆了一个 GIT 存储库,我(感觉很好)不应该更改 maven-compiler-plugin 设置。我已经用 1.7 和 1.8 JDK 配置了一个 。如何在不更改提供的源的情况下通知 maven 使用 on 或其他?

标签: maven maven-3 java


【解决方案1】:

Maven 文档说

编译器插件用于编译项目的源代码。默认编译器是 javac,用于编译 Java 源代码。另请注意,目前默认源设置为 1.5,默认目标设置为 1.5,与运行 Maven 的 JDK 无关。如果要更改这些默认设置,应将源和目标设置为在设置Java编译器的-source-target中描述。

参考:http://maven.apache.org/plugins/maven-compiler-plugin/index.html

Maven 的 Jira Change default source level to 1.5 上有这个有趣的帖子


编辑:
Maven 3.0 及更高版本的更新:

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

来源:http://maven.apache.org/plugins/maven-compiler-plugin/index.html

感谢nachteil 指出。

【讨论】:

  • 自 3.0 版以来,这不是真的 - 请参阅下面的答案。
【解决方案2】:

只使用属性

<properties>
    <maven.compiler.target>1.7</maven.compiler.target>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.test.skip>true</maven.test.skip>
</properties>

【讨论】:

    【解决方案3】:

    来自 maven 编译器插件文档:

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

    我通过搜索引擎找到了这篇文章,我认为它值得更新。 另外:-target-source 选项不会影响编译器本身,但会影响它处理源代码和生成输出字节码的方式。

    【讨论】:

      【解决方案4】:

      您必须在 maven setting.xml 文件中定义一个属性。该属性是您的第二个 javac 路径。(D:\dev\java\ibm\java1.6.0\bin\javac)在您的 pom 文件中将此属性用于 maven-compiler-plugin 后。

      setting.xml

       <settings>
          <profiles>
            <profile>
                <id>IBM_JAVA</id>
                  <properties>
                    <IBM_JAVA_1_6_JAVAC>D:\dev\java\ibm\java1.6.0\bin\javac</IBM_JAVA_1_6_JAVAC>
                  </properties>
            </profile>
          </profiles>
          <activeProfiles>     
              <activeProfile>IBM_JAVA</activeProfile>   
          </activeProfiles>
          </settings> 
      

      pom.xml

      <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
                  <fork>true</fork>
                  <executable>${IBM_JAVA_1_6_JAVAC}</executable>
                  <encoding>UTF-8</encoding>
              <source>1.6</source>
              <target>1.6</target>
          </configuration>
      </plugin>
      

      【讨论】:

        猜你喜欢
        • 2016-08-27
        • 2016-05-14
        • 2018-01-02
        • 1970-01-01
        • 2011-04-07
        • 1970-01-01
        • 2023-04-04
        • 2011-10-27
        • 2017-11-15
        相关资源
        最近更新 更多