Gradle中依赖项集不断变化的多个生成任务

Gradle中依赖项集不断变化的多个生成任务,gradle,build.gradle,Gradle,Build.gradle,我想针对不同的后端实现运行库测试。 这些实现是通过Spring的魔力注入到我的项目中的 目前我通过改变线路来实现这一点 testImplementation group: 'org.mycorp.exmpl' name: 'redis-backend' version: '0.0.1' 到 到 (分别单击我的IntelliJ IDE中的“测试”) 这很麻烦。我想,我的构建管道无法做到这一点 在我的想象中,我将能够创造 一个任务testRedis,它依赖于任务buildRedisTestCl

我想针对不同的后端实现运行库测试。
这些实现是通过Spring的魔力注入到我的项目中的

目前我通过改变线路来实现这一点

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

(分别单击我的IntelliJ IDE中的“测试”)


这很麻烦。我想,我的构建管道无法做到这一点

在我的想象中,我将能够创造

  • 一个任务
    testRedis
    ,它依赖于任务
    buildRedisTestClasses
  • 一个任务
    testMongo
    ,它依赖于任务
    buildMongoTestClasses
因此,我可以在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'
}
但这正是我不再发现/理解的地方。 (正如你可能注意到的,我是一个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

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'
}
./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")}"