Публикация спецификации (как pom.xml) с использованием плагина gradle java-platform - PullRequest
0 голосов
/ 15 апреля 2019

Я устанавливаю спецификацию проекта, которая будет «наследовать» определения от других спецификаций (доступных как pom.xml), а также определять собственные управляемые зависимости.

Я попробовал следующее (как указано в документах java-платформы ) в моем 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 и проверяю полученный 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>

Что не будет работать, потому что синтаксис для импорта poms должен быть

  ...
  <type>pom</type>
  <scope>import</scope>
  ...

Как я могу опубликовать действительную спецификацию как pom.xml с Gradle (используя версию 5.3.1)?

1 Ответ

1 голос
/ 16 апреля 2019

Вы определяете спецификацию как constraint, но это, скорее всего, не то, что вы хотите сделать.Ограничение на платформе просто скажет, что если эта зависимость входит в граф в другом месте , она должна использовать часть platform и рекомендацию версии из ограничения.

Если вы ожидаете, чтоограничения этой спецификации должны быть видны потребителям вашей платформы, тогда вам нужно добавить спецификацию как platform dependency, выполнив что-то вроде:

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

Тогда это будет правильно опубликовано каквстроенная спецификация в Maven.

...