为什么我要运行'gradle clean build'而不是'gradle build'?据我所知,gradle可以检测源变化并在需要时更新最终的工件。那么为什么我仍然需要“清洁”?为什么要运行'gradle clean'?
回答
clean task由java plugin定义,它只是删除buildDir文件夹,从而清除所有内容,包括以前版本中不再相关的剩余部分。不这样做可能会导致不洁的构建,由于构建了以前构建产生的构件,可能会破坏构建。
作为一个例子,假设您的版本包含多个失败的测试,并且您认为这些测试已过时,因此需要删除。如果没有清理测试结果(使用cleanTest任务)或完全构建(通过运行干净的任务),您将会遇到失败的测试结果,从而导致构建失败。类似的副作用也可能发生在从资源中删除的资源/类中,但仍保留在未清理的构建文件夹中。
感谢您的回答。我知道干净的是什么,但我不知道什么时候有用。你能否提供这样一个例子,以便更好地理解?谢谢。 – 2015-03-13 11:41:23
当然。假设您的版本包含多个失败的测试,并且您认为这些测试已过时,因此需要删除。如果没有清理测试结果(使用cleanTest任务)或完全构建(通过运行干净的任务),您将会遇到失败的测试结果,从而导致构建失败。类似的副作用也可能发生在从资源中删除的资源/类中,但仍保留在未清理的构建文件夹中。 – 2015-03-13 12:03:32
有道理。你可以编辑你的答案,包括这个例子,所以我可以标记为正确的? – 2015-03-13 12:41:54
像buck这样的其他构建工具会检测到某些测试已被删除,并且在没有运行干净目标的需求时不会运行它们。我认为这是Gradle的陷阱。
这大多不准确,Gradle有输入和输出跟踪,几乎所有的任务都可以处理这种情况。 – mkobit 2016-10-26 02:35:32
- 1. 运行gradle clean显示ProcessLogger失败
- 2. 为什么不会从jenkins作业中运行gradle
- 3. 为什么Gradle需要频繁上网?
- 4. 为什么执行gradle运行时,classpath中缺少lwjgl?
- 5. 为什么rails需要JavaScript运行时?
- 6. 为什么要运行exec命令?
- 7. JFrame和为什么要继续运行
- 8. Gradle clean被认为是最新的
- 9. 从CLI运行gradle与从Android studio GUI运行gradle有什么不同?
- 10. Android clean build gradle任务
- 11. 为什么测试不能使用这个gradle脚本运行
- 12. 为什么Gradle会运行两次测试?
- 13. 为什么Android:在Desktop中运行Gradle任务:在IntelliJ 2016.2中运行任务?
- 14. 为什么mvn clean install和eclipse在运行的junit测试中有所不同?
- 15. 为什么gradle在构建
- 16. 为什么不运行--exec运行?
- 17. 为什么javascript不运行
- 18. cron为什么不运行?
- 19. 为什么运行命令
- 20. 为什么运行git推
- 21. 为什么'git status'运行过滤器?
- 22. 为什么运行python文件不需要执行权限?
- 23. 为什么要添加一行计算减少运行时间?
- 24. 为什么我们需要为tomcat运行shutdown.bat
- 25. 为什么gradle会生成空档案?
- 26. Gradle jar任务执行wsclean任务,为什么?
- 27. MongoDB - 运行setFeatureCompatibilityVersion需要什么特权?
- 28. Gradle Clean上的Android AppCompatActivity错误
- 29. 你为什么要用!!运营商
- 30. 为什么我的gradle建筑需要太多时间?
为了确保您得到的错误不是来自Gradle的错误索引。或者如果您添加了更改每个依赖项的新库。 – Tschallacka 2015-03-13 09:31:43
“gradel clean build”有助于删除上次构建时生成的所有依赖关系,并从服务器获取新的依赖关系并构建您的项目。谢谢 – Naitik 2015-03-13 09:32:53
@Naitik,那不对。 – Opal 2015-03-13 09:41:51