Gradle 任务之间没有粘滞的设置

Gradle 任务之间没有粘滞的设置,gradle,groovy,Gradle,Groovy,我正试图通过消除重复来减少构建脚本代码。然而,我找不到一个办法让它工作 这就是我今天所说的(但更多的重复): 我试图通过这样做来减少重复: task setupTest(type: Test) { exclude 'folderA/*' environment 'MYVAR', 'myvar' } task testA(type: Test) { ... } testA.dependsOn setupTest task testB(type: Test) {

我正试图通过消除重复来减少构建脚本代码。然而,我找不到一个办法让它工作

这就是我今天所说的(但更多的重复):

我试图通过这样做来减少重复:

task setupTest(type: Test) {
    exclude 'folderA/*'
    environment 'MYVAR', 'myvar'
}

task testA(type: Test) {
        ...
}
testA.dependsOn setupTest

task testB(type: Test) {
        ...
}
testB.dependsOn setupTest
块setupTest在testA和testB之前运行,但exclude和env变量丢失(使用print语句进行测试)


如何实现这样的目标?

您的自定义测试任务如何

class MyTest extends Test {
    @TaskAction
    def init() {
        exclude 'folderA/*'
        environment 'MYVAR', 'myvar'
    }
}

task testA(type: MyTest) {
    // ...
}

task testB(type: MyTest) {
    // ...
}

gradle文件只是一个groovy脚本,定义一个groovy函数并正常调用它,而不是依赖gradle端的调用钩子,这不是更简单吗?我已经尝试过了,但也没有成功。不知道如何访问环境和排除函数,也不知道如何传递对它们的访问。
class MyTest extends Test {
    @TaskAction
    def init() {
        exclude 'folderA/*'
        environment 'MYVAR', 'myvar'
    }
}

task testA(type: MyTest) {
    // ...
}

task testB(type: MyTest) {
    // ...
}