4

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

4

2 回答 2

7

您能否告诉我是否必须指定 maven-compiler-plugin 详细信息?

不,但它会使用 Java 1.3 或石器时代的东西来编译。

如果是,为什么会这样,我了解它的作用,但不确定为什么需要它?

答案是不'。但这就是原因。您肯定不想在新代码上使用 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

它说您可以将sourceet al 设置为旧版本。

于 2012-07-19T09:38:16.597 回答
4

maven-compiler-plugin部分是可选的。如果您没有在 pom.xml 中包含该部分,则应用默认值。

默认编译器是 javac,用于编译 Java 源代码。另请注意,目前默认源设置为 1.5,默认目标设置为 1.5,与运行 Maven 的 JDK 无关。

我个人的偏好是有一个明确的配置,原因如下。

  1. 我不认为依赖外部默认值是一个好主意,因为当插件版本改变时这些可能会改变。
  2. 我不太可能希望为 Java 1.5 编译一个新项目
于 2012-07-19T09:37:26.650 回答