2014-10-06 3 views
8

Когда я создаю приложение с пружинной загрузкой (в отдельную банку) с использованием gradle build, генерируются соответствующие артефакты. Получающаяся банка содержит все зависимые баночки и является исполняемой.Gradle maven-publish не создает автономное приложение весенней загрузки

Я также настроил Maven опубликовать плагин следующим образом:

publishing { 
    publications { 
     mavenJava(MavenPublication) { 
     from components.java 
     } 
    } 
} 

Теперь, когда я исполняю gradle publish, гораздо меньше, баночка без зависимостей получает строить и опубликованы.

Следующие шаги не выполняются в последнем случае.

:myProject:bootRepackage                   
:myProject:assemble 

Как я могу убедиться, что правильные шаги сборки выполняются при публикации?

ответ

17

Я немного удивлен, что публикация с components.java не вызывает задачу плагина Java assemble. Задача Spring Boot bootRepackage задана как зависимость задачи assemble, поэтому вам нужно вызвать publish для запуска assemble. Попробуйте добавить следующую строку в ваш build.gradle:

publish { 
    dependsOn assemble 
} 
+0

Причина в том, что плагин Java просто добавляет результат 'jar' задачи к сбору компонентов. Плагин Spring Boot будет обязан изменить это, чтобы быть перепутанной банкой. Тем не менее, можно утверждать, что то, что публикуется на самом деле, должно быть просто простой баночкой, и что переупаковка банки, вероятно, должна быть опубликована под уникальным классификатором. –

+1

Это хорошее предложение, спасибо. Вместо того, чтобы рассматривать переупакованную банку как отдельный артефакт, Spring Boot в настоящее время преобразует выходные данные из задачи jar. Теперь я задаюсь вопросом, следует ли также изменить это, чтобы как исходный артефакт, так и переупакованный артефакт можно было ссылаться в сборке Gradle. Я открыл https://github.com/spring-projects/spring-boot/issues/1666. –

+0

Назначение классификатора на упакованном банке [уже поддерживается] (http://docs.spring.io/spring-boot/docs/1.1.7.RELEASE/reference/htmlsingle/#build-tool-plugins-gradle-repackage -конфигурация). Просто добавьте 'bootRepackage {classifier = 'boot'}. –

Смежные вопросы