java - run - spring-boot-starter-parent
¿Cómo le digo a Spring Boot qué clase principal usar para el archivo ejecutable? (9)
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:
<properties>
<!-- The main class to start by executing java -jar -->
<start-class>com.mycorp.starter.HelloWorldApplication</start-class>
</properties>
Cambié el nombre de mi proyecto y seguía encontrando la antigua clase de Application
en la ruta de compilación. Lo eliminé en la carpeta ''compilar'' 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 )
Para aquellos que usan Gradle (en lugar de Maven), haciendo referencia here :
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''
}
Para aquellos que usan Gradle (en lugar de Maven):
springBoot {
mainClass = "com.example.Main"
}
Probé el siguiente código en pom.xml y funcionó para mí
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>myPackage.HelloWorld</mainClass>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<fork>true</fork>
<executable>D:/jdk1.8/bin/javaw.exe</executable>
</configuration>
</plugin>
</plugins>
Si NO usa el pom spring-boot-starter-parent, entonces de la documentación de Spring :
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.1.3.RELEASE</version>
<configuration>
<mainClass>my.package.MyStartClass</mainClass>
<layout>ZIP</layout>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
Si está utilizando spring-boot-starter-parent en su pom, simplemente agregue lo siguiente a su pom:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Luego haz tu paquete mvn.
Vea esta página de doc . De primavera .
Un aspecto muy importante es mencionar que la estructura del directorio debe ser src / main / java / nameofyourpackage
Usé gradlew gradlew
en gradle
lugar gradle
y funcionó para mí.