0

在一个新项目中,我们正在使用 maven。我发现了一个我们通过使用 ant target 在 ant 中解决的问题depend。问题是我们有一个带有公共字段的类,这些字段被其他类引用。如果我删除这些字段之一,则代码不应编译,但似乎所有引用它的类都没有被编译,尽管特定类已编译。

maven 是否提供了与 antdepend 类似的功能,还是我们做错了什么?

4

1 回答 1

2

据我所知,ant depend在 Maven 中没有。但是,编译插件应该检测到更改并重新编译它们。但是 maven compile 使用的是 javac,因此存在无法正确找到所有相关更改的问题(仅使用 javac 构建 ant 项目时也会出现同样的问题)。

我使用 maven-compiler-plugin:2.3.2 对项目进行了测试,并且出现了问题。但是对我来说,当我在我的 pom 中指定一个更新的编译器插件时,问题就消失了:

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
 </plugin>

之后,他编译了更多的类并且它可以工作。您也可以尝试使用其他编译器作为 javac,它更适合像 eclipse 这样的增量构建,请参阅非 javac 编译器文档

对于发布版本,我总是建议使用mvn clean package,这样您就可以确保项目已完全编译并且不会受到过期文件的影响。

更新:

我还发现错误MCOMPILER-160可能与我的问题有关,因为我使用的是 2.3.2 版本。所以也许你也检查你的编译器版本。

于 2013-05-15T18:33:29.500 回答