maven 如何仅编译修改后的 java 文件?

我只是好奇地想知道这一点,当我给mvn安装而不做“干净”时,maven只编译修改后的java文件。maven 如何识别 java 文件是否被修改?我相信它没有使用文件的最后修改属性。

我相信的原因:我有一个模块,在合并了svn的更改后,我给了mvn安装,它没有编译修改后的文件,当我查看更改时,我看到“long”在getters和setters中被修改为“Long”。

所以我只是想知道maven如何识别java文件是否已更改?

(P.S 我正在使用Apache Maven 3.0.3,如果这很重要的话)


答案 1

我相信Maven编译器插件使用源文件和类文件上的最后修改日期来确定是否需要重新编译。

编译器网站的信息相当少,但目标页面包含有关以下属性的信息,这些属性可以微调过时性计算:http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#staleMillis。这是关于陈旧性的唯一官方声明。compiler:compile


答案 2

在不了解maven的情况下,我可以告诉你,一般来说,类似“make”的工具使用“上次更改”的时间戳,这可以解释你使用svn时遇到的问题(参见维基百科关于Subversion的弱点


推荐