我正在设置一个项目特定的 BOM,它将“继承”其他 BOM 的定义(以 pom.xml 形式提供),并定义自己的托管依赖项。
我在我的build.gradle.kts:
plugins {
`java-platform`
`maven-publish`
}
dependencies {
constraints {
api(platform("org.camunda.bpm:camunda-bom:${Versions.camunda}"))
}
}
publishing {
publications {
create<MavenPublication>("camunda-bom") {
from(components["javaPlatform"])
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我这样做gradle publishToMavenLocal并检查生成的 pom.xml 时,.m2/repositories它看起来像:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.camunda.bpm</groupId>
<artifactId>camunda-bom</artifactId>
<version>7.10.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
这是行不通的,因为导入 pom 的语法应该是
...
<type>pom</type>
<scope>import</scope>
...
Run Code Online (Sandbox Code Playgroud)
如何使用 gradle 将有效的 BOM 发布为 pom.xml(使用版本 5.3.1)?
您将 BOM 定义为 a constraint,但这很可能不是您想要做的。平台上的约束只是说,如果该依赖项在其他地方进入图表,它应该使用platform其中的一部分以及来自约束的版本推荐。
如果您希望平台的使用者能够看到该 BOM 的约束,那么您需要platform dependency通过执行以下操作来添加 BOM:
javaPlatform {
allowDependencies()
}
dependencies {
api(platform("org.camunda.bpm:camunda-bom:${Versions.camunda}"))
}
Run Code Online (Sandbox Code Playgroud)
然后这将在 Maven 中作为内联 BOM 正确发布。
| 归档时间: |
|
| 查看次数: |
1741 次 |
| 最近记录: |