Execution default of goal
org.springframework.boot:spring-boot-maven-plugin:1.0.1.RELEASE:repackage
failed:
Unable to find a single main class from the following candidates
Mój projekt ma więcej niż jedną klasę z main
metodą. Jak powiedzieć wtyczce Spring Boot Maven, których klas powinien użyć jako klasy głównej?
Odpowiedzi:
Dodaj swoją klasę początkową do swojej pom:
lub
źródło
mvn clean package -Dstart-class=com.foo.Application
jeśli chcesz dynamicznie określić za pomocą której klasy głównejmvn spring-boot:run -Dstart-class=com.foo.Application
. Jest to ważne tylko wtedy, gdy nie podałeś mainClass we wtyczce pomDla osób używających Gradle (zamiast Maven):
źródło
Could not set unknown property 'mainClass' for object of type org.springframework.boot.gradle.dsl.SpringBootExtension
.Jeśli NIE używasz pom-spring-boot-starter-parent-pom, to z dokumentacji Spring :
źródło
Dla osób używających Gradle (zamiast Maven), odwołując się tutaj :
źródło
Jeśli korzystasz z pom-spring-boot-starter-parent, po prostu dodajesz do pom:
Następnie zrób swój pakiet mvn.
Zobacz tę stronę z dokumentami wiosennymi .
Bardzo ważnym aspektem jest tutaj wspomnienie, że struktura katalogów musi być src / main / java / nameofyourpackage
źródło
Wypróbowałem następujący kod w pom.xml i zadziałał dla mnie
źródło
Od wersji Spring Boot 1.5 możesz całkowicie zignorować podatny na błędy literał ciągów w pom lub build.gradle. Narzędzie do przepakowywania (za pośrednictwem wtyczki maven lub gradle) wybierze to, na którym jest napisane adnotacja
@SpringBootApplication
. (Szczegółowe informacje na ten temat: https://github.com/spring-projects/spring-boot/issues/6496 )źródło
Zmieniłem nazwę projektu i nadal znajdowałem starą
Application
klasę na ścieżce kompilacji. Usunąłem go w folderze „build” i wszystko było w porządku.źródło
Widziałem ten problem z Javą 1.9 i SpringBoot 1.5.x, gdy klasa główna nie jest wyraźnie określona.
W Javie 1.8 jest w stanie znaleźć klasę główną bez jawnej właściwości, a „pakiet mvn” działa dobrze.
źródło