Spring Boot에 실행 가능한 jar에 사용할 메인클래스를 지시하려면 어떻게 해야 하나요?
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 플러그인에서 메인 클래스로 사용해야 하는 클래스를 알려면 어떻게 해야 하나요?
시작 클래스를 POM에 추가합니다.
<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 {
mainClass = 'com.example.ExampleApplication'
}
또는 Spring Boot DSL의 mainClassName 속성을 사용하여 프로젝트 전체에서 메인클래스 이름을 설정할 수도 있습니다.
springBoot {
mainClass = 'com.example.ExampleApplication'
}
폼에 spring-boot-starter-parent를 사용하는 경우 폼에 다음 항목을 추가합니다.
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
그런 다음 mvn 패키지를 실행합니다.
여기서 매우 중요한 것은 디렉토리 구조가 src/main/java/name of your package여야 한다는 것입니다.
pom.xml에서 다음 코드를 시도해보니 효과가 있었다.
<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>
Spring Boot 1.5 이후 pom 또는 build.gradle에서 오류가 발생하기 쉬운 문자열 리터럴을 완전히 무시할 수 있습니다.리패키지 툴(매븐 또는 그래들플러그인 경유)은 다음과 같은 주석이 달린 것을 선택합니다.@SpringBootApplication
(자세한 것은, 이 호를 참조해 주세요.https://github.com/spring-projects/spring-boot/issues/6496 )
나는 내 프로젝트의 이름을 바꿨고 그것은 여전히 오래된 것을 찾고 있었다.Application
빌드 경로의 클래스입니다.'빌드' 폴더에서 삭제했더니 아무 문제 없었어요.
Java 1.9 및 SpringBoot 1.5.x에서 메인 클래스가 명시적으로 지정되지 않은 경우 이 문제가 발생하였습니다.
Java 1.8에서는 명시적 속성 없이 메인 클래스를 찾을 수 있으며 'mvn 패키지'는 정상적으로 작동합니다.
Grade를 사용하는 경우 'java' 플러그인이 아닌 'application' 플러그인을 적용할 수 있습니다.이를 통해 스프링 부트 그래들 플러그인 작업을 사용하지 않고 다음과 같이 메인 클래스를 지정할 수 있습니다.
plugins {
id 'org.springframework.boot' version '2.3.3.RELEASE'
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
id 'application'
}
application {
mainClassName = 'com.example.ExampleApplication'
}
이점으로서는, 다음의 방법으로 애플리케이션을 실행할 수 있습니다.gradle run
gradle에 의해 자동으로 설정된 클래스 패스를 사용합니다.또한 플러그인은 운영 체제 고유의 시작 스크립트를 포함하여 애플리케이션을 TAR 및/또는 ZIP로 패키지합니다.
언급URL : https://stackoverflow.com/questions/23217002/how-do-i-tell-spring-boot-which-main-class-to-use-for-the-executable-jar
'source' 카테고리의 다른 글
마리아에서 하위 문자열 또는 단어 검색DB (0) | 2022.11.14 |
---|---|
복합 인덱스는 언제 사용해야 합니까? (0) | 2022.11.14 |
왜 Python3에는 xrange 함수가 없습니까? (0) | 2022.11.14 |
MySQL 지정된 두 개 이상의 값 중 최소/최대 값을 선택합니다. (0) | 2022.11.14 |
"WHERE column ="에 있는 MySQL에서 물음표의 중요성은 무엇입니까? (0) | 2022.11.14 |