gpt4 book ai didi

gradle - 为多个配置指定 Gradle 版本约束

转载 作者:行者123 更新时间:2023-12-03 04:08:54 24 4
gpt4 key购买 nike

我有一个多模块 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。如果我知道配置(implementationcompileOnly、...),这就可以正常工作。

现在的问题是:如何指定适用于所有配置的版本?如果模块决定对测试装置代码使用 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'

有捷径吗?

最佳答案

如果使用 java-platform plugin 修复此问题.

平台:

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

关于gradle - 为多个配置指定 Gradle 版本约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62468768/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com