Укажите ограничения версии Gradle для нескольких конфигураций - PullRequest
0 голосов
/ 19 июня 2020

У меня есть многомодульный проект Gradle 6.5, который также включает код некоторых тестовых приспособлений. Чтобы избежать проблем с зависимостями, я хотел бы установить (и поддерживать) версии в одном месте и просто сослаться на безверсионные зависимости в отдельных модулях:

subprojects {
    apply plugin: 'java'

    dependencies {
        implementation 'com.google.guava:guava'

        constraints {
            implementation 'com.google.guava:guava:20.0'
            compileOnly 'com.google.code.findbugs:jsr305:3.0.2'
        }
    }
}

Теперь, если модуль включает compilyOnly 'com.google.code.findbugs:jsr305' версия 3.0.2 берется исходя из ограничений выше. Это нормально работает, если я знаю конфигурацию (implementation, compileOnly, ...).

Теперь вопрос: как я могу указать версии, применимые ко всем конфигурациям? Что, если модуль решит использовать аннотации JSR305 для кода тестовых приспособлений? testFixtures 'com.google.code.findbugs:jsr305' не работает, так как версия нигде не указана. Я также считаю, что повторять спецификацию версии для всех (возможных) конфигураций - плохая идея:

implementation 'com.google.code.findbugs:jsr305:3.0.2'
testFixturesImplementation 'com.google.code.findbugs:jsr305:3.0.2'
compileOnly 'com.google.code.findbugs:jsr305:3.0.2'

Есть ли на это ярлык?

1 Ответ

0 голосов
/ 19 июня 2020

Если это исправлено с помощью java -платформенного плагина .

Платформа:

plugins {
    id 'java-platform'
}

dependencies {
    constraints {
        api 'com.google.guava:guava:20.0'
        api 'com.google.code.findbugs:jsr305:3.0.2'
    }
}

Обычный модуль с тестовыми приспособлениями:

plugins {
    id "java-test-fixtures"
}

dependencies {
    testFixturesImplementation platform(project(':platform-module'))
    testFixturesCompileOnly 'com.google.code.findbugs:jsr305'
}

./gradlew -q module-with-test-fixtures:dependencies дает:

[...]
testFixturesCompileClasspath - Compile classpath for source set 'test fixtures'.
+--- project :module-with-test-fixtures (*)
+--- com.google.code.findbugs:jsr305 -> 3.0.2
\--- project :platform-module
     \--- com.google.code.findbugs:jsr305:3.0.2 (c)
[...]
(c) - dependency constraint
...