Я пытаюсь использовать плагин java-platform
для совместного использования ограничений зависимостей в многомодульном проекте.Я хотел бы установить модуль с именем platform
, который я могу импортировать, используя platform(project(":platform"))
в других модулях.Кроме того, я хотел бы импортировать спецификацию в свой проект платформы, используя platform("group-id:of-the-bom:and-version")
.
Примером является следующая структура:
// settings.gradle
include("platform")
include("consumer")
// platform/build.gradle
apply plugin: 'java-platform'
repositories {
mavenCentral()
}
dependencies {
constraints {
api platform("org.wildfly.bom:wildfly-javaee8:15.0.1.Final")
}
}
// consumer/build.gradle
apply plugin: 'java-library'
repositories {
mavenCentral()
}
dependencies {
implementation platform(project(":platform"))
implementation "org.jboss.spec.javax.ejb:jboss-ejb-api_3.2_spec"
}
Когда я запускаю gradle consumer:dependencies
Я получаю вывод, содержащий следующее:
compileClasspath - Compile classpath for source set 'main'.
+--- project :platform
\--- org.jboss.spec.javax.ejb:jboss-ejb-api_3.2_spec FAILED
Кажется, что модуль platform
не "реэкспортирует" ограничения, которые были введены с помощью platform()
.
Я нашел два «обходных пути», которые на самом деле не решают мою проблему, но, кажется, указывают, что проблема заключается в использовании platform()
вместе с плагином java-platform
:
- Replace
implementation platform(project(":platform"))
с implementation platform("org.wildfly.bom:wildfly-javaee8:15.0.1.Final")
в consumer/build.gradle
. - Поместите явную запись в
platform/build.gradle
, такую как api org.jboss.spec.javax.ejb:jboss-ejb-api_3.2_spec:1.0.1.Final
.
Является ли плагин java-platform
не предназначенным дляиспользуется таким образом, или мне не хватает какой-то опции конфигурации?