maven编译器插件2.0.2

时间:2012-07-19 09:32:31

标签: java maven

请告诉我是否必须在我的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吗?

2 个答案:

答案 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无关   用。

我个人的偏好是出于以下原因进行明确配置。

  1. 我不认为依赖外部默认值是个好主意 当插件版本发生变化时,这些可能会发生变化。
  2. 我不太可能希望编译 new 项目 Java 1.5