我正在设置一个项目特定的BOM,它将“继承”其他BOM的定义(可用作pom.xml),并定义自己的托管依赖项。
我在我的java-platform docs中尝试了以下(如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"])
}
}
}
但是,当我做gradle publishToLocalMaven
并检查.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
,但这很可能不是您想要做的。对平台的约束只会说如果该依赖关系在其他地方进入图形,它应该使用它的platform
部分和约束的版本推荐。
如果您希望平台的消费者可以看到该BOM的约束,那么您需要通过执行以下操作将BOM添加为platform
dependency
:
javaPlatform {
allowDependencies()
}
dependencies {
api(platform("org.camunda.bpm:camunda-bom:${Versions.camunda}"))
}
然后,这将作为Maven中的内联BOM正确发布。