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