[java] 실행 가능한 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>

그런 다음 mvn 패키지를 수행하십시오.

참조 이 봄 문서 페이지를 .

여기서 매우 중요한 측면은 디렉토리 구조가 src / main / java / nameofyourpackage이어야한다는 것입니다.


답변

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에서 무시할 수 있습니다. 리 패키징 도구 (maven 또는 gradle 플러그인을 통해)가 주석이 달린 도구를 선택합니다 @SpringBootApplication. (자세한 내용은이 문제를 참조하십시오 : https://github.com/spring-projects/spring-boot/issues/6496 )