在一个新项目中,我们正在使用 maven。我发现了一个我们通过使用 ant target 在 ant 中解决的问题depend
。问题是我们有一个带有公共字段的类,这些字段被其他类引用。如果我删除这些字段之一,则代码不应编译,但似乎所有引用它的类都没有被编译,尽管特定类已编译。
maven 是否提供了与 antdepend 类似的功能,还是我们做错了什么?
据我所知,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 版本。所以也许你也检查你的编译器版本。