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