请告诉我是否必须在我的POM中指定maven-compiler-plugin详细信息:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
如果是,为什么如此,我明白它的作用,但不确定为什么需要它?还没有其他方法可以在maven中调用javac吗?
答案 0 :(得分:7)
您能否告诉我是否必须指定maven-compiler-plugin详细信息?
没有。但它会使用Java 1.3或者石器时代的东西进行编译。
如果是,为什么如此,我明白它的作用,但不确定为什么需要它?
答案是&#39;否&#39;。但这就是原因。您确定不希望在新代码上使用Java 1.3进行编译。你想要Java 5中的所有新功能。不是吗? :)所以,你必须在已经混乱的POM中添加这些额外的行。
还没有其他方法可以在maven中调用javac吗?
没有。但即使您没有此块,mvn compile
或任何其他命令也会起作用。但是,如果您的源代码具有Java 5中的任何高级内容,但在先前版本中没有,则编译将失败。
修改1
当我有JDK 5时,如何编译为1.3?
嗯,有一个选项可以在Java编译器中设置。请参阅此处的Java编译器选项:http://docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/javac.html
它表示您可以将source
等设置为旧版本。
答案 1 :(得分:4)
maven-compiler-plugin部分是可选的。如果您不在pom.xml中包含该部分,则应用默认值。
默认编译器是javac,用于编译Java源代码。 另请注意,目前默认的源设置为1.5和 默认目标设置为1.5,与您运行Maven的JDK无关 用。
我个人的偏好是出于以下原因进行明确配置。