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?
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. –
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. –
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. –