Gradle 在执行单元测试时构建每个子项目
Gradle builds every subproject when a unit test is executed
我有一个项目由多个子项目组成,这些子项目在 settings.gradle 文件中定义。
每当我 运行 对其中一个项目进行单元测试时,它总是 "configures" 并再次编译相关模块,即使它们没有任何变化。
这真的很痛苦,因为需要一段时间才能完成。我之前在同一个项目上没有这个问题,但是突然出现了。任何想法如何解决它?
我将 intellij 用于 IDE 并使用 gradle 进行构建。输出如下所示:
> Configure project :xx1
compiling YYYY
> Configure project :xx2
compiling YYYY
> Configure project :xx3
compiling YYYY
> Configure project :xx4
compiling YYYY
您可能已经知道,如果 UP-TO-DATE
检查失败,任务只会 运行。任务的 UP-TO-DATE
检查将
- 获取当前任务输入的哈希值
- 获取当前任务输出的哈希值
- 将当前哈希值与前一个 运行 任务的哈希值进行比较
- 仅当两个当前哈希值都与先前的哈希值相匹配时,才认为该任务
UP-TO-DATE
尝试 运行宁 gradle 传递 -i
标志(或 --info
)以查看 UP-TO-DATE
检查的结果。我猜某个任务的 inputs/outputs 配置不正确,导致 UP-TO-DATE
检查在任务树中的某处失败。也许您正在某处使用当前 date/time 作为任务输入? (不要这样做!)。也许两个任务正在将文件复制到同一目录? (不要这样做)
验证构建的一个好方法是:
- 运行 干净的构建
- 运行 再次构建而不清理
在完美世界中,第二个构建不会执行任何工作。如果第二个构建执行任何任务,则可能有一些任务 inputs/outputs 配置不正确
我有一个项目由多个子项目组成,这些子项目在 settings.gradle 文件中定义。
每当我 运行 对其中一个项目进行单元测试时,它总是 "configures" 并再次编译相关模块,即使它们没有任何变化。
这真的很痛苦,因为需要一段时间才能完成。我之前在同一个项目上没有这个问题,但是突然出现了。任何想法如何解决它? 我将 intellij 用于 IDE 并使用 gradle 进行构建。输出如下所示:
> Configure project :xx1
compiling YYYY
> Configure project :xx2
compiling YYYY
> Configure project :xx3
compiling YYYY
> Configure project :xx4
compiling YYYY
您可能已经知道,如果 UP-TO-DATE
检查失败,任务只会 运行。任务的 UP-TO-DATE
检查将
- 获取当前任务输入的哈希值
- 获取当前任务输出的哈希值
- 将当前哈希值与前一个 运行 任务的哈希值进行比较
- 仅当两个当前哈希值都与先前的哈希值相匹配时,才认为该任务
UP-TO-DATE
尝试 运行宁 gradle 传递 -i
标志(或 --info
)以查看 UP-TO-DATE
检查的结果。我猜某个任务的 inputs/outputs 配置不正确,导致 UP-TO-DATE
检查在任务树中的某处失败。也许您正在某处使用当前 date/time 作为任务输入? (不要这样做!)。也许两个任务正在将文件复制到同一目录? (不要这样做)
验证构建的一个好方法是:
- 运行 干净的构建
- 运行 再次构建而不清理
在完美世界中,第二个构建不会执行任何工作。如果第二个构建执行任何任务,则可能有一些任务 inputs/outputs 配置不正确