运行 在所有子项目的所有测试之前检查子项目中的样式

run checkstyles in subprojects before all tests in all subprojects

我有 gradle 个项目和 4 个子项目。我有当前根 gradle.build 与 checkstyle:

allprojects {
  apply plugin: "checkstyle"
  checkstyle {
  ...
  }
}

所以当我 运行 ./gradlew 在主文件夹中构建时,我得到下一个: 检查第一个子项目的样式,然后进行测试。然后它 运行 对第二个子项目进行检查样式,然后对第二个子项目进行测试,依此类推。

问题是:如果我在 1st 子项目中有很长的测试,我可以等待很多时间,然后发现我在 4th 项目中有 2 个空格,所以 checkstyle 失败了,但我等了很多时间为了它。

我真正想要的是: 运行 所有子项目的所有检查(checkstyle,我也有 pmd),然后 运行 所有子项目中的所有测试。这将为团队中的每个人节省大量时间。

除了制作 2 个不同的管道,然后 运行 分开,我可以这样做吗?喜欢:./gradlew allMyCheckstyles && ./gradlew 构建。 我只想使用 ./gradlew build 谢谢!

我试了很多dependsOn,运行之后,还是不行。

抱歉,这个答案的前一个版本误解了这个问题的要求。

这里有一个解决方案可以满足您的需求:


// 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))
    }
}

文档here and here