当我没有更改后运行maven时, maven-compiler-plugin
通常会重新编译Java文件;或maven-war-plugin
重建或复制战争,即使没有任何改变;或gwt-maven-plugin
构建Google Web Toolkit代码(在某些计算机上,而不是其他计算机上(,即使没有任何更改。
我如何看到Maven决定重建某些东西的原因?例如,它认为(错误地(更改了哪些文件?
这是一个示例:maven-compiler-plugin
每次都在重新复制战争资源,即使什么都没改变。它正在使用"爆炸"战争来节省开发时间,但即使是常规战争也会发生。
但是我的问题更普遍是如何找出为什么选择重建而不是使用现有输出。
[INFO] Processing war project
[INFO] Copying webapp webResources [d:devproj1/war/WEB-INF] to [d:devproj1targetproj1-0.0.1-SNAPSHOT]
[INFO] Copying webapp webResources [d:devproj1/lib/libs] to [d:devproj1targetproj1-0.0.1-SNAPSHOT]
[INFO] Copying webapp resources [d:devproj1war]
Webapp assembled in [37919 msecs]
maven插件必须自己(可能使用助手(实现陈旧性检查,并且它们可以免费记录原因,因此没有通用的答案(例如,与Gradle相反(。总体而言,Maven增量构建支持相当差(请参阅https://cwiki.apache.org/confluence/display/display/maven/maven/incremental builds,这很旧,但仍然很正确,但仍然很正确(在每个插件(及其版本(上
您可以尝试使用调试日志(mvn -X
(运行Maven并挖入日志。但是首先尝试使用插件的最新版本。这并不意味着您对的答案为什么这些输入被认为是僵化的,或者它可以修复观察到的行为;但是除了调试插件本身外,实际上没有其他解决方案。