Grundsätzlich in einem Multi-Modul-Projekt Frühjahr Boot-Anwendung verpacken, ich habe ein Multi-Modul-Projekt haben, wie folgt:Kann nicht richtig
parent-project
├── core-app
└── web-app
core-app
und web-app
beide Frühlings-Boot-Projekte sind, und ihre Eltern ist parent-project
statt spring-boot-starter-parent
. Also gerade deswegen, haben sie beide:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<type>pom</type>
<version>${spring.boot.version}</version>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
in ihren pom.xml
sowie:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.version}</version>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
Dieses Setup perfekt läuft in IntelliJ, doch, wenn ich die Anwendung package
, erhalte ich eine sehr klein .jar
und im Grunde, wenn ich es ausführbar ausführen, bekomme ich mehrere command not found
Fehler. Wenn ich es mit java -cp my.jar com.Main
starte, bekomme ich SpringApplication not found
. Von daher verstehe ich, dass die core-app
und web-app
nicht alle Abhängigkeiten innerhalb der Jar hat.
Wenn ich es in ein Standalone .jar
mit spring-boot-starter-parent
als Eltern bauen; Es klappt.
Was mache ich falsch? Vielen Dank.
Update:
Nun, das war, was passiert, wenn ich mvn package
. Allerdings, wenn ich mvn spring-boot:repackage
tatsächlich ausführen ich erhalte:
Execution default-cli of goal org.springframework.boot:spring-boot-maven-plugin:1.5.2.RELEASE:repackage failed: Source must refer to an existing file
Wie hier vorgeschlagen this scheint das Problem zu lösen, aber ich bezweifle, dass es nicht der normale Weg sein könnte. Zum Beispiel:
mvn clean package spring-boot:repackage
macht den Trick, aber ich kann nicht mvn clean && mvn package && mvn spring-boot:repackage
. Ich würde mich über eine Erklärung dafür freuen. Vielen Dank!
Nur ein Gedanke - Was ist die Notwendigkeit, Multi-Modul-Projekt zu haben, wenn Sie bereits Ihr Produkt als Microservice versenden? –
Ich muss Domänenobjekte/POJOs in ein Modul aufteilen, damit sie von nicht-technischen Personen in einer völlig anderen Anwendung verwendet werden können. –
Sie sollten mit 'java -jar my.jar' anstelle von' java -cp my.jar com.Main' laufen. –