我可以防止Maven编译所有内容吗?

时间:2018-07-27 12:13:16

标签: maven

我建立了一个很小的测试项目,在一个程序包中包含两个Java源代码。如果我连续两次运行maven,但没有进行任何编辑,则maven显然会检查时间戳,并确定所有内容都是最新的,并且不进行任何编译。但是,如果我触摸任何一个源文件,maven似乎都会重新编译所有源。我应该注意,我使用的是“ mvn编译”而不是“ mvn安装”。

现在,我知道在某些情况下(特别是打开枚举类型或字符串),其中一个源文件的更改要求重新编译所有使用该文件的文件,但是这种全有或全无的编译方法似乎具有攻击性与旧版工具(尤其是make及其变体)的行为相反,并且可能导致项目似乎经常遭受的某些漫长的构建时间。

所以,问题是:有一种方法可以告诉Maven仅编译比其配对二进制文件新的那些源,如果是的话,该怎么做?

(作为一个附带的问题,除了我提到的方法之外,还有其他情况需要重新编译所有方法吗?我注意到在将来的Java版本中这些特殊问题很可能会消失,所以它将如果该工具也准备受益,那就太好了。

TIA 托比

1 个答案:

答案 0 :(得分:1)

如果您不使用clean并且没有任何更改,则maven不会不必要地重新编译,例如sor

mvn clean install

将删除所有目标文件夹,然后构建所有内容,因为没有目标。

mvn install

将仅构建在模块的上一次目标构建之后代码已更改的模块。它足够智能,可以知道模块是否具有更改的依赖性,从而需要重新构建。

也就是说,每次都要进行一次mvn清理,如果您想跳过测试以加快速度,那么它只是一点CPU。

mvn clean install -DskipTests