2014-06-20 17 views
7

Ich verwende Maven Plugin die Hauptklasse wie folgt festgelegt:Geben Hauptklasse Frühling-Boot-Befehlszeile

<plugin> 
<groupId>org.springframework.boot</groupId> 
<artifactId>spring-boot-maven-plugin</artifactId> 
<configuration> 
    <mainClass>com.myapp.main.MainClass</mainClass> 
</configuration> 
</plugin> 

Aber manchmal möchte ich meine Anwendung mit einer anderen Hauptklasse laufen. Was sind die Befehlszeilenargumente dafür?

java -jar myapp-1.0.jar ... 

Thx

+0

+1. Ich habe die gleiche Frage (Ich habe mich entschieden, meine eigene "Master" -Main-Klasse zu schreiben, die auf das erste Argument schaut und dann woanders weiter versendet, so dass man eine nette Befehlszeile ohne vollständige Klassennamen und komisches -D-Zeug bekommen kann, aber würde Seien Sie gut informiert, wenn Sie Kurse durchführen möchten, an die Sie vorher nicht gedacht haben. – Thilo

+0

mögliche Duplikate von [Mehrere runnable Klassen in JAR, wie sie ausgeführt werden?] (Http://stackoverflow.com/questions/3976514/multiple-runable-classes-inside-jar-how-to-run-them) –

+0

Vinay Lodha, nein, es funktioniert nicht: 'Ausnahme im Thread" main "java.lang.NoClassDefFoundError: org/springframework/bohnen/BeansException' – etig

Antwort

5

Es gibt eine launcher for that in Spring Boot already. Sie müssen das Glas damit als Main-Class (by setting the layout in the build config) bauen.

+1

Und Sie möchten das Layout auf" ZIP "setzen, um den PropertyLauncher zu erhalten. – Thilo

+0

Ich weiß, das ist ein alter Beitrag, hatte aber immer noch eine Frage. Also musst du 2 verschiedene Gläser mit verschiedenen Hauptteilen bauen? oder kann es als Befehlszeilenparameter im selben Jar angegeben werden? – amitection

+0

Haben Sie Folgendes gesehen: http://docs.spring.io/spring-boot/docs/1.4.0.RELEASE/reference/htmlsingle/#executable-jar-property-launcher-features? –

15

folgenden Befehl den Trick:

java -cp my-app.jar -Dloader.main=myApplicationClass org.springframework.boot.loader.PropertiesLauncher 
+1

IMO das ist die beste Lösung für diejenigen, die nicht mit ihren Maven Configs versauen wollen. –

1

Ausführen von Windows Powershell ich dieses Format benötigt (mit Anführungszeichen):

java -cp .\myjarfile.jar -D"loader.main=com.app.etc.FullyQualifiedMainClass" org.springframework.boot.loader.PropertiesLauncher

die akzeptierte Antwort Um zu klären: Sie können direkt Ändern Sie die Eigenschaft loader.main in der META-INF/MANIFEST.MF-Datei des Datenträgers, wenn Sie mit einer statischen Lösung einverstanden sind.