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

q8l4jmvw  于 2023-05-18  发布在  其他
关注(0)|答案(3)|浏览(387)

当从命令运行gradle构建时,我可以跳过测试,如下所示:

./gradlew build -x test

我有一个自定义任务,它可以清理,构建和发布到Maven本地,如下所示:

task releaseLocal(type: GradleBuild) {
    tasks = ['clean', 'build', 'publishToMavenLocal']
}

当我调用此函数时,以下任务都不会跳过测试:

./gradlew releaseLocal
./gradlew releaseLocal -x test

我可以在任务中添加哪些内容以跳过测试?

kse8i1jr

kse8i1jr1#

GradleBuild类型的任务提供了一个名为startParameter的属性。此属性的类型为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 <task>跳过任何任务。
请注意,您不能更改第二个示例中两个配置语句的顺序。在内部,GradleBuild的属性tasks将应用于其startParameter属性,因此必须在覆盖startParameter属性后定义tasks

piah890a

piah890a2#

虽然有点晚了,但是你可以使用assemble来代替build。基本上,build意味着assemble + test

bxgwgixi

bxgwgixi3#

尝试以下两个命令:

gradle -q releaseLocal
gradle -q releaseLocal -x test

相关问题