为什么我要运行gradle clean build
而不是gradle build
?
据我了解,Gradle可以检测源更改并在需要时更新最终工件。那么,为什么我仍然需要clean
?
clean task由java plugin定义,它只是删除了buildDir文件夹,因此清除了所有内容,包括与先前版本不再相关的剩余内容。不这样做可能会导致构建不整洁,并可能由于先前构建产生的构建工件而被破坏。
作为示例,假设您的构建包含多个失败的测试,并且您确定这些测试已过时,因此需要将其删除。如果不清除测试结果(使用cleanTest任务)或不完全构建(通过运行clean任务),您将陷于失败的测试结果中,这将导致构建失败。从资源中删除资源/类但保留在未清理的build文件夹中,也会发生类似的副作用。
[其他类似buck的构建工具将检测到某些测试已删除,并且无需运行干净的目标就无法运行它们。我认为这是gradle的陷阱。