가끔 spring boot 프로젝트에서 Main Class가 2개인지 모르고 빌드하다 보면 에러를 만나게 됩니다.
이런 경우 대응방법을 설명드리도록 하겠습니다.
Spring Boot 애플리케이션에서 Main Class가 2개인 경우, 빌드할 때 어떤 Main Class를 사용할지 지정해주어야 합니다. 이를 위해서는 Maven 또는 Gradle 빌드 도구를 사용하여 설정 파일을 수정해주어야 합니다.
1. Maven 사용 시
Maven을 사용하는 경우, pom.xml 파일에 다음과 같이 설정을 추가합니다.
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<mainClass>com.example.Application1</mainClass>
</configuration>
</execution>
<execution>
<id>repackage2</id>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<mainClass>com.example.Application2</mainClass>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
'spring-boot-maven-plugin' 플러그인을 사용하여 repackage 명령을 실행합니다. 이 때, 'mainClass' 속성을 사용하여 어떤 Main Class를 사용할지 지정해 줍니다. 'execution' 요소를 사용하여 'repackage' 명령을 두 번 실행하고, 각각의 'mainClass' 속성에 적절한 Main Class를 지정해 줍니다.
2. Gradle 사용 시
Gradle을 사용하는 경우, build.gradle 파일에 다음과 같이 설정을 추가합니다. 정의 경우, Kotlin과 함께 Gradle을 사용해줘서 build.gradle.kts에서 설정해 주고 빌드하였습니다.
bootJar {
mainClassName = 'com.example.Application1'
}
task bootJar2(type: BootJar) {
mainClassName = 'com.example.Application2'
}
'bootJar' 태스크에 mainClassName 속성을 사용하여 어떤 Main Class를 사용할 지 지정해 줍니다. 또한, 'task' 요소를 사용하여 'bootJar' 태스크와 비슷한 'bootJar2' 태스크를 추가하고, mainClassName 속성에 적절한 Main Class를 지정해 줍니다.
위와 같이 Maven 또는 Gradle 설정 파일에서 Main Class를 지정해주면, 빌드 시 지정한 Main Class를 사용하여 애플리케이션을 실행할 수 있습니다.
또는 다음과 같은 방법으로도 빌드 시 지정한 Main Class를 사용하여 애플리케이션을 실행할 수 있습니다.
springBoot {
mainClass.set("com.bluebox.be.flashcard.FlashcardBackEndApplication")
}
이렇게 설정이 끝났으면 빌드를 수행하겠습니다. 저는 IntelliJ 도구를 사용하였기에 다음과 같이 빌드를 하였습니다.
IntelliJ에서 Gradle 탭에서 build> bootjar 선택 후 실행하면 build> libs 폴더 하위에 jar파일 생성됩니다. 그 파일을 서버에서 실행하시면 됩니다.
또 다른 방법으로는 gradlew.bat 파일을 실행하여 빌드를 할 수 있습니다.
> cd 프로젝트 폴더
> gradlew.bat
> gradlew build
'Languages' 카테고리의 다른 글
spring boot 실행하는 방법과 외부 properties 설정 파일 읽기 (0) | 2023.04.04 |
---|---|
서버에서 spring boot 애플리케이션 실행할 때 옵션과 실행 방법 (0) | 2023.04.04 |
Spring Framework 기반 언어 및 Kotlin 기반으로 사용하는 방법 (0) | 2023.04.04 |
Spring Framework-Error: Public Key Retrieval is not allowed (0) | 2023.04.03 |
Android 네트워크 보안 및 network Security Config 설정 (0) | 2023.03.22 |