在我们使用maven的新项目上。我发现了一个问题,我们通过使用ant目标depend
解决了这个问题。问题是我们有一个具有从其他类引用的公共字段的类。如果我删除其中一个字段,代码不应该编译,但似乎所有引用它的类都不会被编译,尽管编译了特定的类。
maven是否提供与ant依赖类似的功能,或者我们做错了什么?
答案 0 :(得分:2)
据我所知,maven中没有ant depend
。但是,编译插件应该检测更改并重新编译它们。但maven编译使用的是javac,因此它存在无法正确查找所有相关更改的问题(使用javac构建ant项目时会出现同样的问题)。
我使用maven-compiler-plugin对项目进行了测试:2.3.2并且出现了问题。但是对我来说,当我在我的pom中指定一个更新的编译器插件时,问题就消失了:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
</plugin>
之后他编写了更多的课程并且有效。 你也可以尝试使用其他编译器作为javac,它更适合增量构建,比如eclipse,见non javac compiler docu。
对于发布版本,我总是建议使用mvn clean package
,这样您就可以确保项目完全编译并且没有过时的文件。
更新
自从我使用2.3.2版本以来,我还发现了可能与我的问题有关的错误MCOMPILER-160。所以也许你也检查你的编译器版本。