TIL

[TIL] 서버 배포 시 에러 no main manifest attribute, in {JAR_FILENAME}-plain.jar

봄봄로그 2023. 9. 18. 18:42

배포시도 후에 생성되는 nohup.out 파일을 확인해보니 이런 에러가 있었다.

Error: Invalid or corrupt jarfile /home/ec2-user/app/step1/
no main manifest attribute, in /home/ec2-user/app/step1/{JAR_FILENAME}-plain.jar

no manifest 는 예전에 jar파일 가지고 이리저리 가지고 놀 때 많이 봤던 에러인데 또 만났네...

아무튼 근데 이상한 점이 저 디렉토리에서 생성된 파일들을 확인해보면 jar파일이 두개가 생성되는 것을 확인할 수 있었다.

찾아보니 스프링부트 2.5 이상부터 빌드시에 생성되는 자르파일 인 것을 알게되었다.

이 plain파일은 이름처럼 의존성을 포함하지 않고 클래스와 리소스 파일만 있는 파일이기 때문에 no manifest가 뜬 것.

 

배포스크립트에 가장 마지막에 생성된 jar파일을 가져오도록 했기 때문에 순서상으로 plain jar파일이 선택된 것이고, 이것으로 배포하려하니 에러가 난 것이었다.

그래서 plain jar파일을 생성하지 않도록 추가했다. 

 

build.gradle 

bootJar {
    bootJar.enabled= true
    jar.enabled = false
}