Dev/Java
[Java] 메이븐 Executable Jar 파일 빌드
헝그리둘기
2022. 12. 20. 13:12
개발환경: Centos7.9.2009, JDK1.8, SpringBoot2.6.3
프로젝트 내에서 메이븐(mvnw 명령)을 통해 package를 하면 /target폴더 안에 jar파일이 생성된다. 이 jar 파일을 텍스트 편집기로 열어보면 인코딩이 깨진듯한 문자들이 나오는데, 정상이다. 이 jar파일은 java -jar 명령어로 실행시킬 수 있지만, start와 같은 쉘 스크립트로 실행하면 바이너리로 된 jar파일을 실행할 수 없다는 cannot execute binary file 에러가 발생한다. 그렇기 때문에 쉘 스크립트로 jar파일을 실행하기 위해선 executable한 jar파일로 빌드해야 한다.
메이븐 프로젝트 생성 시 만들어지는 pom.xml파일에서 아래 코드와 같이 build>plugins>plugin>configuration 태그 내에 <executable>true</executable> 태그를 넣어주면 된다. 이후 다시 jar파일로 빌드해 텍스트 편집기로 열어보면 스프링부트 실행 시 나타나는 특유의 콘솔 로그(Spring Boot Startup Script)가 나타나고, start 같은 쉘 스크립트로 jar파일을 실행할 수 있게 된다.
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
참고사이트: https://www.baeldung.com/spring-boot-app-as-a-service