我有gradle项目和4个子项目。我当前具有checkstyle的root gradle.build:
allprojects {
apply plugin: "checkstyle"
checkstyle {
...
}
}
所以当我在主文件夹中运行./gradlew build时,我得到下一个: 第一个子项目的checkstyle,然后进行测试。然后,它为第二个子项目运行checkstyle,然后为第二个项目进行测试,等等。
问题是:如果我在第一个子项目中进行了长时间的测试,则可以等待很多时间,然后发现我在第四个项目中有2个空格,因此checkstyle失败,但是我等待了很多时间
我真正想要的是: 对所有子项目运行所有检查(checkstyle,我也有pmd),然后在所有子项目中运行所有测试。这将为团队中的每个人节省大量时间。
除了建立两个不同的管道并分别运行它们之外,我可以这样做吗?例如:./gradlew allMyCheckstyles && ./gradlew构建。 我想只使用./gradlew构建 谢谢!
我尝试了很多dependsOn,runAfter,但没有成功。
答案 0 :(得分:2)
抱歉,此答案的先前版本误解了此问题的要求。
这是一种应该执行您想要的操作的解决方案:
// Create a lifecycle task in the root project.
// We'll make this depend on all checkstyle tasks from subprojects (see below)
def checkstyleAllTask = task("checkstyleAll")
// Make 'check' task depend on our new lifecycle task
check.dependsOn(checkstyleAllTask)
allProjects {
// Ensure all checkstyle tasks are a dependency of the "checkstyleAll" task
checkstyleAllTask.dependsOn(tasks.withType(Checkstyle))
tasks.withType(Test) {
// Indicate that testing tasks should run after the "checkstyleAll" task
shouldRunAfter(checkstyleAllTask)
// Indicate that testing tasks should run after any checksytle tasks.
// This is useful for when you only want to run an individual
// subproject's checks (e.g. ./gradlew ::subprojA::check)
shouldRunAfter(tasks.withType(Checkstyle))
}
}