介绍
以下情况:
我正在处理使用 Gradle 构建系统构建的多个依赖 Java 项目。
我想通过 gradle 的 java 平台插件和生成的 BOM(材料清单)来解决几个依赖项。
示例和问题:
在下面的示例中,有一个build.gradle
平台 BOM 用作所有项目的依赖关系解析器。此 BOM 中有两个约束:一个用于名为的实现依赖项foo
,另一个用于名为 的编译依赖项bar
。
// build.gradle for BOM "my-utility-bom"
// ...
dependencies {
constraints {
api("some.implementation.dependency:foo:3.4.1")
api("some.compile.dependency:bar:1.2.0")
}
}
// ...
然后通过将平台关键字应用于给定的 bom 项目,在项目中使用这两个依赖项。因为我想使用来自 bom 的两个约束作为依赖项,所以我implementation
在平台项目上使用compileOnly
同样的方式。
// build.gradle for java project
//...
dependencies {
implementation(platform(project(":my-utility-bom")))
compileOnly(platform(project(":my-utility-bom")))
implementation("some.implementation.dependency:foo")
compileOnly("some.compile.dependency:bar")
}
// ...
之后,所有依赖项都作为implementation
依赖项和compileOnly
依赖项被拉入。但我只想要一个依赖作为implementation
依赖,另一个作为compileOnly
依赖。
问题
是否可以只提取特定的依赖项implementation
或compileOnly
依赖项而不使用单独的 BOM 来编译和实现依赖项?