Как удалить спецификацию из подпроектов gradle?

#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")
    }
}