#java #gradle #gradle-kotlin-dsl #maven-bom
#java #gradle #gradle-kotlin-dsl #maven-спецификация
Вопрос:
У меня есть многомодульная сборка gradle, которая представляет собой набор повторно используемых компонентных проектов и набор приложений, использующих общие компоненты.
.
├── build.gradle.kts
├── components
│ ├── blob
│ ├── clock
│ ├── database
│ ├── email
│ ├── json
│ └── web
├── gradle.properties
├── platform
│ ├── build.gradle.kts
│ └── settings.gradle.kts
├── settings.gradle.kts
└── app
├── api
└── ui
В приведенном выше примере древовидной структуры app:api
проект может использовать components:clock
проект. Я хочу опубликовать спецификацию (спецификацию) из всех проектов компонентов, чтобы я мог перемещать компоненты в собственное репозиторий.
Как я могу настроить gradle для публикации спецификации из коллекции подпроектов?
Ответ №1:
Gradle предоставляет специальный плагин для создания артефактов спецификации (называемых платформами в мире Gradle)
Вы можете объявить их с помощью плагина java-platform.
https://docs.gradle.org/current/userguide/java_platform_plugin.html
Вы можете создать дополнительный подпроект, который ссылается на все ваши проекты компонентов. Плагин maven-publish работает из коробки практически так же, как и в обычных проектах Java, и будет публиковать спецификацию POM.
У меня нет под рукой примеров синтаксиса Kotlin, но в основном объявление выглядит почти так же, как с обычными зависимостями, но с дополнительным блоком ограничений:
plugins {
`java-platform`
}
dependencies {
constraints {
api project(":lib")
}
}