使用 gradle 插件 java-platform 发布 BOM(作为 pom.xml)
Publish BOM (as pom.xml) using gradle plugin java-platform
我正在设置一个特定于项目的 BOM,它将“继承”其他 BOM 的定义(可用作 pom.xml)并定义自己的托管依赖项。
我在 build.gradle.kts
中尝试了以下(如 java-platform docs 中所述):
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"])
}
}
}
但是当我执行 gradle publishToMavenLocal
并检查 .m2/repositories
中的结果 pom.xml 时,它看起来像:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.camunda.bpm</groupId>
<artifactId>camunda-bom</artifactId>
<version>7.10.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
这将不起作用,因为导入 poms 的语法应该是
...
<type>pom</type>
<scope>import</scope>
...
如何使用 gradle(使用版本 5.3.1)将有效的 BOM 发布为 pom.xml?
您将 BOM 定义为 constraint
,但这很可能不是您想要的。
平台上的约束只会说,如果该依赖项进入图表 elsewhere,它应该使用它的 platform
部分和来自约束的版本推荐。
如果您希望该 BOM 的约束对您平台的消费者可见,那么您需要通过执行以下操作将 BOM 添加为 platform
dependency
:
javaPlatform {
allowDependencies()
}
dependencies {
api(platform("org.camunda.bpm:camunda-bom:${Versions.camunda}"))
}
然后这将在 Maven 中作为内联 BOM 正确发布。
我正在设置一个特定于项目的 BOM,它将“继承”其他 BOM 的定义(可用作 pom.xml)并定义自己的托管依赖项。
我在 build.gradle.kts
中尝试了以下(如 java-platform docs 中所述):
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"])
}
}
}
但是当我执行 gradle publishToMavenLocal
并检查 .m2/repositories
中的结果 pom.xml 时,它看起来像:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.camunda.bpm</groupId>
<artifactId>camunda-bom</artifactId>
<version>7.10.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
这将不起作用,因为导入 poms 的语法应该是
...
<type>pom</type>
<scope>import</scope>
...
如何使用 gradle(使用版本 5.3.1)将有效的 BOM 发布为 pom.xml?
您将 BOM 定义为 constraint
,但这很可能不是您想要的。
平台上的约束只会说,如果该依赖项进入图表 elsewhere,它应该使用它的 platform
部分和来自约束的版本推荐。
如果您希望该 BOM 的约束对您平台的消费者可见,那么您需要通过执行以下操作将 BOM 添加为 platform
dependency
:
javaPlatform {
allowDependencies()
}
dependencies {
api(platform("org.camunda.bpm:camunda-bom:${Versions.camunda}"))
}
然后这将在 Maven 中作为内联 BOM 正确发布。