Gradle 中具有不断变化的依赖集的多个构建任务

Multiple Build-Tasks with changing sets of dependencies in Gradle

我想 运行 针对不同的后端实现测试一个库。
这些实现通过 Spring.

的魔力注入到我的项目中

目前我通过更改行来做到这一点

testImplementation group: 'org.mycorp.exmpl' name: 'redis-backend' version: '0.0.1'

testImplementation group: 'org.mycorp.exmpl' name: 'mongo-backend' version: '0.0.1'

testImplementation group: 'org.mycorp.exmpl' name: '<whatever-backend>' version: '<whatever.version>'

然后运行宁

gradlew test

(分别在我的 IntelliJ IDE 中点击 'test')


这很麻烦。而且我不能用我的构建管道做到这一点(我猜)。

在我的想象中,我可以创造

所以我可以 select 我的 IDE 或 运行 中的正确任务,所有这些都在我的构建管道中。
我在网上找到了一些提示,你可以使用这样的东西:

dependencies {
    testImplementation group: 'org.mycorp.exmpl', name: 'redis-backend', version: '0.0.1', configuration: 'redis'
    testImplementation group: 'org.mycorp.exmpl', name: 'mongo-backend', version: '0.0.1', configuration: 'mongo'
}

但这就是我停止的地方 finding/understanding。 (您可能会注意到,我是 gradle 新手)

尝试类似的方法:

./gradlew test -Dbackend=redis

dependencies {
    if (System.getProperty("backend") == "redis") {
        implementation "org.mycorp.exmpl:redis-backend:0.0.1"
    } else {
        implementation "org.mycorp.exmpl:mongo-backend:0.0.1"
    }
}

甚至:

./gradlew test -Dbackend=redis-backend:0.0.1

implementation "org.mycorp.exmpl:${System.getProperty("backend")}"

将其设为项目 属性 -Pbackend,建议使用默认值。

Environment Options