¿Cómo le digo a Spring Boot qué clase principal usar para el archivo ejecutable?

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 

Mi proyecto tiene más de una clase con un método main . ¿Cómo le digo al plugin Spring Boot Maven cuál de las clases debería usar como clase principal?

Agregue su clase de inicio en su pom:

   com.mycorp.starter.HelloWorldApplication  

Para aquellos que usan Gradle (en lugar de Maven):

 springBoot { mainClass = "com.example.Main" } 

Si NO usa el pom spring-boot-starter-parent, entonces de la documentación de Spring :

  org.springframework.boot spring-boot-maven-plugin 1.1.3.RELEASE  my.package.MyStartClass ZIP     repackage     

Si está utilizando spring-boot-starter-parent en su pom, simplemente agregue lo siguiente a su pom:

    org.springframework.boot spring-boot-maven-plugin    

Luego haz tu paquete mvn.

Vea esta página de doc . De spring .

Un aspecto muy importante es mencionar que la estructura del directorio debe ser src / main / java / nameofyourpackage

Para aquellos que usan Gradle (en lugar de Maven), haciendo referencia aquí :

La clase principal también se puede configurar explícitamente utilizando la propiedad mainClassName de la tarea:

 bootJar { mainClassName = 'com.example.ExampleApplication' } 

Alternativamente, el nombre de la clase principal se puede configurar en todo el proyecto utilizando la propiedad mainClassName de Spring Boot DSL:

 springBoot { mainClassName = 'com.example.ExampleApplication' } 

Probé el siguiente código en pom.xml y funcionó para mí

    org.springframework.boot spring-boot-maven-plugin  myPackage.HelloWorld    maven-compiler-plugin  true D:\jdk1.8\bin\javaw.exe    

Cambié el nombre de mi proyecto y seguía encontrando la antigua clase de Application en la ruta de comstackción. Lo eliminé en la carpeta ‘comstackr’ y todo estaba bien.

Desde Spring Boot 1.5, puede completar ignorar el literal de cadena propenso a error en pom o build.gradle. La herramienta de reempaquetado (a través de maven o plugin de gradle) seleccionará la que se anotó con @SpringBootApplication por usted. (Consulte este problema para más detalles: https://github.com/spring-projects/spring-boot/issues/6496 )