使用gradle插件java-platform发布BOM(作为pom.xml)

问题描述 投票:0回答:1

我正在设置一个项目特定的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?

gradle maven-bom
1个回答
1
投票

您将BOM定义为constraint,但这很可能不是您想要做的。对平台的约束只会说如果该依赖关系在其他地方进入图形,它应该使用它的platform部分和约束的版本推荐。

如果您希望平台的消费者可以看到该BOM的约束,那么您需要通过执行以下操作将BOM添加为platform dependency

javaPlatform {
    allowDependencies()
}
dependencies {
    api(platform("org.camunda.bpm:camunda-bom:${Versions.camunda}"))
}

然后,这将作为Maven中的内联BOM正确发布。

© www.soinside.com 2019 - 2024. All rights reserved.