指定Maven编译器使用的JDK版本在哪里?

时间:2012-03-07 14:46:25

标签: maven maven-3 java

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

JAVA_HOME

4 个答案:

答案 0 :(得分:9)

Maven doc说

  

编译器插件用于编译项目的源代码。默认编译器是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指出。

答案 1 :(得分:5)

只需使用属性

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

答案 2 :(得分:3)

来自maven编译器插件doucemntation:

  

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

我通过搜索引擎发现这篇文章,我觉得值得更新。 另外:-target-source选项不会影响编译器本身,而是它处理源代码并生成输出字节代码的方式。

答案 3 :(得分:1)

您必须在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>