我正在尝试学习如何使用“平台”来对齐多项目设置中项目之间的依赖版本。到目前为止,我已经看到:
- https://docs.gradle.org/6.2.1/userguide/platforms.html
- https://docs.gradle.org/6.2.1/userguide/dependency_management_terminology.html#sub::terminology_platform
- https://docs.gradle.org/6.2.1/userguide/dependency_version_alignment.html#sec:virtual_platform
- https://docs.gradle.org/6.2.1/userguide/dependency_constraints.html#sec:adding-constraints-transitive-deps
- https://docs.gradle.org/6.2.1/userguide/java_platform_plugin.html
- ……以及更多试图寻找示例的外部站点,例如
https://dzone.com/articles/gradle-goodness-use-bill-of-materials-bom-as-depen
我了解如何在项目中声明约束。我想我也了解如何为此目的使用 BOM。但是,我想为此使用一个“强制平台项目”,这里有很多事情我不明白:
- 我是否必须使用“java 平台”插件?我们有非 Java 项目。我们的配置不太适合“api”和“runtime”桶。
- 即使我们都是 Java,对于任何一个项目,我们也不能为其“api”和“运行时”提供单独的版本。虽然我确实了解这在某些情况下可能提供的控制级别,但我不明白这些是如何协同工作的,以确保项目获得指定的依赖项。
- Gradle 如何知道在使用平台的项目和平台规范之间匹配哪些配置的约束?我想我看到了平台中定义“api”和其他约束的示例,我“理解”项目将通过声明 api platform(project(':platform')) 来引用它。我希望 Gradle 不会试图通过简单的名称匹配来将“api”与“api”匹配。我需要多个不同的依赖配置,无论它被称为什么,都与同一个平台“配置”对齐。
总的来说,我没有找到足够的信息来对它的作用或工作方式充满信心。有人可以填写空白或指向一些显示比上述更多示例和详细信息的文档吗?目前我不明白我应该为那个平台项目(它的build.gradle
)实际写什么和/或我将如何从我们拥有的当前项目中正确引用它。
谢谢!
更新 1:在https://discuss.gradle.org/t/can-someone-tell-me-what-i-am-doing-wrong-to- 上发布了一个最小的实验来测试我(缺乏)对此的理解align-dependency-versions-across-projects/35601 ...