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

rap*_*apt 9 java maven-3 maven

当我没有在我的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>
Run Code Online (Sandbox Code Playgroud)

Nis*_*ant 9

Maven医生说

Compiler Plugin用于编译项目的源代码.默认编译器是javac,用于编译Java源代码.另请注意,目前默认的源设置为1.5,默认目标设置为1.5,与您运行Maven的JDK无关.如果要更改这些默认值,则应按照设置-source-target编译Java编译器中的说明设置源和目标.

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

Maven的Jira Change默认源级别为1.5,这个有趣的线程


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

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

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

感谢nachteil指出它.


Kal*_*oni 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>
Run Code Online (Sandbox Code Playgroud)