실행 가능한 jar에 사용할 기본 클래스를 Spring Boot에 알리려면 어떻게합니까?
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
내 프로젝트에는 main
메소드 가있는 둘 이상의 클래스가 있습니다. Spring Boot Maven 플러그인에 어떤 클래스를 기본 클래스로 사용해야하는지 어떻게 알 수 있습니까?
응원단에 시작 수업을 추가하십시오.
<properties>
<!-- The main class to start by executing java -jar -->
<start-class>com.mycorp.starter.HelloWorldApplication</start-class>
</properties>
또는
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.mycorp.starter.HelloWorldApplication</mainClass>
</configuration>
</plugin>
</plugins>
</build>
Maven 대신 Gradle을 사용하는 사람들의 경우 :
springBoot {
mainClass = "com.example.Main"
}
spring-boot-starter-parent pom을 사용하지 않으면 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>
Maven 대신 Gradle을 사용하는 사람들은 여기를 참조 하십시오 .
작업의 mainClassName 속성을 사용하여 기본 클래스를 명시 적으로 구성 할 수도 있습니다.
bootJar {
mainClassName = 'com.example.ExampleApplication'
}
또는 스프링 부트 DSL의 mainClassName 속성을 사용하여 메인 클래스 이름을 프로젝트 전체에서 구성 할 수 있습니다.
springBoot {
mainClassName = 'com.example.ExampleApplication'
}
pom에서 spring-boot-starter-parent를 사용하는 경우 간단히 pom에 다음을 추가하십시오.
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Then do your mvn package.
A very important aspect here is to mention that the directory structure has to be src/main/java/nameofyourpackage
I tried the following code in pom.xml and it worked for me
<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>
I had renamed my project and it was still finding the old Application
class on the build path. I removed it in the 'build' folder and all was fine.
Since Spring Boot 1.5, you can complete ignore the error-prone string literal in pom or build.gradle. The repackaging tool (via maven or gradle plugin) will pick the one annotated with @SpringBootApplication
for you. (Refer to this issue for detail: https://github.com/spring-projects/spring-boot/issues/6496 )
Have seen this issue with Java 1.9 and SpringBoot 1.5.x, when main-class is not specified explicitly.
With Java 1.8, it is able to find main-class without explicit property and 'mvn package' works fine.
'Programing' 카테고리의 다른 글
지원 라이브러리를 사용하여 리플 애니메이션을 얻는 방법은 무엇입니까? (0) | 2020.05.30 |
---|---|
가장 좋아하는 (G) Vim 플러그인 / 스크립트? (0) | 2020.05.30 |
ScrollView 내부의 Recyclerview가 부드럽게 스크롤되지 않습니다 (0) | 2020.05.30 |
Windows 호스트 파일에서 포트 번호 사용 (0) | 2020.05.30 |
MySQL DECIMAL을 사용하는 방법? (0) | 2020.05.30 |