Gradle 渐变-在自定义任务中跳过测试

Gradle 渐变-在自定义任务中跳过测试,gradle,Gradle,使用命令运行gradle构建时,我可以跳过如下测试: ./gradlew build -x test 我有一个自定义任务,用于清理、构建和发布到Maven local,定义如下: task releaseLocal(type: GradleBuild) { tasks = ['clean', 'build', 'publishToMavenLocal'] } 当我调用此函数时,以下任务都不会跳过测试: ./gradlew releaseLocal ./gradlew releaseL

使用命令运行gradle构建时,我可以跳过如下测试:

./gradlew build -x test
我有一个自定义任务,用于清理、构建和发布到Maven local,定义如下:

task releaseLocal(type: GradleBuild) {
    tasks = ['clean', 'build', 'publishToMavenLocal']
}
当我调用此函数时,以下任务都不会跳过测试:

./gradlew releaseLocal
./gradlew releaseLocal -x test

我可以向任务中添加什么来跳过测试?

尝试以下两个命令:

gradle -q releaseLocal
gradle -q releaseLocal -x test

GradleBuild
类型的任务提供一个名为
startParameter
的属性。此属性的类型为,可用于传递配置,否则将通过命令行参数传递。使用
-x
选项传递的任务名称存储在
excludedTaskNames
属性中,因此您可以使用以下代码从生成中排除名为
test
的任务:

task releaseLocal(type: GradleBuild) {
    tasks = ['clean', 'build', 'publishToMavenLocal']
    startParameter.excludedTaskNames = ['test']
}
但是,对于每次调用
releaseLocal
,这将排除任务
test
,因此您可以尝试使用以下代码从当前生成中传递命令行参数:

task releaseLocal(type: GradleBuild) {
    startParameter = gradle.startParameter.newInstance()
    tasks = ['clean', 'build', 'publishToMavenLocal']
}
这将从当前构建中复制命令行参数,因此现在可以通过调用
gradle releaseLocal-x
跳过任何任务

请注意,您不能更改第二个示例中两个配置语句的顺序。在内部,
GradleBuild
的属性
tasks
将应用于其
startParameter
属性,因此您必须在覆盖
startParameter
属性后定义
任务