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')
这很麻烦。而且我不能用我的构建管道做到这一点(我猜)。
在我的想象中,我可以创造
- 一个任务
testRedis
依赖于任务 buildRedisTestClasses
- 一项任务
testMongo
取决于任务 buildMongoTestClasses
- ...
所以我可以 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
,建议使用默认值。
我想 运行 针对不同的后端实现测试一个库。
这些实现通过 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')
这很麻烦。而且我不能用我的构建管道做到这一点(我猜)。
在我的想象中,我可以创造
- 一个任务
testRedis
依赖于任务buildRedisTestClasses
- 一项任务
testMongo
取决于任务buildMongoTestClasses
- ...
所以我可以 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
,建议使用默认值。