2014-10-06 21 views
8

Wenn ich eine Spring-Boot-Anwendung (in einem Standalone-Gehäuse) unter Verwendung von gradle build erstelle, werden die richtigen Artefakte generiert. Das resultierende Jar enthält alle abhängigen Jars und ist ausführbar.Gradle maven-publish erstellt keine Standalone-Spring-Boot-Anwendung

Ich habe auch die Maven-Plugin veröffentlicht wie folgt konfiguriert:

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

Nun, wenn ich ausführen gradle publish, ein viel kleineres Gefäß ohne Abhängigkeiten bekommt bauen und veröffentlicht.

Folgende Schritte werden im letzteren Fall nicht ausgeführt.

:myProject:bootRepackage                   
:myProject:assemble 

Wie kann ich sicherstellen, dass die korrekten Build-Schritte beim Veröffentlichen ausgeführt werden?

Antwort

17

Ich bin ein wenig überrascht, dass Publishing von components.java nicht die assemble Task des Java-Plug-Ins auslöst. Spring Boot bootRepackage Aufgabe ist als eine Abhängigkeit der assemble Aufgabe eingerichtet, so dass Sie publishassemble ausführen müssen müssen. Versuchen Sie, die folgenden zu Ihrem build.gradle:

publish { 
    dependsOn assemble 
} 
+0

Der Grund dafür ist, dass das Java-Plugin einfach das Ergebnis der 'jar' Aufgabe der Komponentensammlung ergänzt. Es wäre die Verantwortung des Spring-Boot-Plugins, dies so zu modifizieren, dass es das umgepackte Jar ist. Das heißt, man könnte argumentieren, dass das, was veröffentlicht wird, eigentlich nur das einfache Glas sein sollte und dass das umgepackte Glas wahrscheinlich unter einem eindeutigen Klassifizierer veröffentlicht werden sollte. –

+1

Das ist ein guter Vorschlag, danke. Anstatt das neu gepackte JAR als separates Artefakt zu behandeln, transformiert Spring Boot derzeit die Ausgabe der JAR-Task an Ort und Stelle. Ich frage mich jetzt, ob das auch geändert werden sollte, so dass sowohl das ursprüngliche Artefakt als auch das neu verpackte Artefakt innerhalb des Gradle-Builds angesprochen werden können. Ich habe https://github.com/spring-projects/spring-boot/issues/1666 geöffnet. –

+0

Das Zuweisen eines Klassifikators zum neu gepackten Jar wird [bereits unterstützt] (http://docs.spring.io/spring-boot/docs/1.1.7.RELEASE/reference/htmlsingle/#build-tool-plugins-gradle-repackage) -Aufbau). Fügen Sie einfach 'bootRepackage {classifier = 'boot'} hinzu. –