복붙노트

[SPRING] Spring Boot에게 어떤 메인 클래스를 실행 가능한 jar 파일로 사용할 지 알려주려면 어떻게해야합니까?

SPRING

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 플러그인에게 어떤 클래스를 기본 클래스로 사용해야하는지 어떻게 알 수 있습니까?

해결법

  1. ==============================

    1.pom에 시작 클래스를 추가하십시오.

    pom에 시작 클래스를 추가하십시오.

    <properties>
        <!-- The main class to start by executing java -jar -->
        <start-class>com.mycorp.starter.HelloWorldApplication</start-class>
    </properties>
    
  2. ==============================

    2.Maven 대신 Gradle을 사용하는 경우 :

    Maven 대신 Gradle을 사용하는 경우 :

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

    3.spring-boot-startter-parent pom을 사용하지 않는다면, Spring 문서에서 :

    spring-boot-startter-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>
    
  4. ==============================

    4.pom에 spring-boot-startter-parent를 사용하는 경우 다음을 pom에 추가하기 만하면됩니다.

    pom에 spring-boot-startter-parent를 사용하는 경우 다음을 pom에 추가하기 만하면됩니다.

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    

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

    이 Spring 문서 페이지를 참조하십시오.

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

  5. ==============================

    5.Maven 대신 Gradle을 사용하는 분들은 여기를 참조하십시오 :

    Maven 대신 Gradle을 사용하는 분들은 여기를 참조하십시오 :

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

    6.내가 pom.xml에서 다음 코드를 시도하고 그것은 나를 위해 일했다.

    내가 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>
    

  7. ==============================

    7.내 프로젝트의 이름을 변경했고 빌드 경로에서 이전 Application 클래스를 여전히 찾고있었습니다. 내가 '빌드'폴더에서 제거하고 모두 괜찮 았어.

    내 프로젝트의 이름을 변경했고 빌드 경로에서 이전 Application 클래스를 여전히 찾고있었습니다. 내가 '빌드'폴더에서 제거하고 모두 괜찮 았어.

  8. ==============================

    8.스프링 부트 1.5 이후에는 pom 또는 build.gradle에서 오류가 발생하기 쉬운 문자열 리터럴을 무시할 수 있습니다. 재 패키징 도구 (maven 또는 gradle plugin을 통해)는 @SpringBootApplication으로 주석이 달린 패키지를 선택합니다. (자세한 내용은이 문제를 참조하십시오 : https://github.com/spring-projects/spring-boot/issues/6496)

    스프링 부트 1.5 이후에는 pom 또는 build.gradle에서 오류가 발생하기 쉬운 문자열 리터럴을 무시할 수 있습니다. 재 패키징 도구 (maven 또는 gradle plugin을 통해)는 @SpringBootApplication으로 주석이 달린 패키지를 선택합니다. (자세한 내용은이 문제를 참조하십시오 : https://github.com/spring-projects/spring-boot/issues/6496)

  9. ==============================

    9.main-class가 명시 적으로 지정되지 않은 경우 Java 1.9 및 Spring Boot 1.5.x에서이 문제점을 보았습니다.

    main-class가 명시 적으로 지정되지 않은 경우 Java 1.9 및 Spring Boot 1.5.x에서이 문제점을 보았습니다.

    Java 1.8에서는 명시 적 속성없이 메인 클래스를 찾을 수 있으며 'mvn package'가 정상적으로 작동합니다.

  10. from https://stackoverflow.com/questions/23217002/how-do-i-tell-spring-boot-which-main-class-to-use-for-the-executable-jar by cc-by-sa and MIT license