自定义 Gradle 任务来构建所有项目而不进行测试?
Custom Gradle task to build all projects without testing?
我知道我可以执行 'gradle build -x test',但是有没有办法创建自定义 Gradle 任务,比如 buildNoTests,它将构建我所有的项目,但会完全忽略测试(不要compile/run 他们)?
我读到 'assemble' 任务还不够,因为它可能会错过其他不是测试但包含在 'build' 任务中的任务。
将其放在根目录中 build.gradle
allprojects {
afterEvaluate {
def buildTask = tasks.findByPath('build')
if (buildTask) {
task buildNoTests {
dependsOn buildTask
}
gradle.taskGraph.whenReady { TaskExecutionGraph graph ->
if (graph.hasTask(buildNoTests)) {
def skipNames = ['test', 'compileTestJava', 'processTestResources', 'testClasses'] as Set
Collection<Task> testTasks = graph.allTasks.findAll { skipNames.contains(it.name) }
testTasks.each { it.enabled = false }
}
}
}
}
}
我知道我可以执行 'gradle build -x test',但是有没有办法创建自定义 Gradle 任务,比如 buildNoTests,它将构建我所有的项目,但会完全忽略测试(不要compile/run 他们)?
我读到 'assemble' 任务还不够,因为它可能会错过其他不是测试但包含在 'build' 任务中的任务。
将其放在根目录中 build.gradle
allprojects {
afterEvaluate {
def buildTask = tasks.findByPath('build')
if (buildTask) {
task buildNoTests {
dependsOn buildTask
}
gradle.taskGraph.whenReady { TaskExecutionGraph graph ->
if (graph.hasTask(buildNoTests)) {
def skipNames = ['test', 'compileTestJava', 'processTestResources', 'testClasses'] as Set
Collection<Task> testTasks = graph.allTasks.findAll { skipNames.contains(it.name) }
testTasks.each { it.enabled = false }
}
}
}
}
}