#gradle #build.gradle
#gradle #build.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)
Это громоздко. И я не могу этого сделать с моим конвейером сборки (я думаю).
В моем воображении я мог бы создать
- задача
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)
Ответ №1:
Попробуйте что-то похожее:
./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
с предлагаемым значением по умолчанию.
Смотрите Параметры среды.