현재 사이드 프로젝트를 배포하면서 겪고 있는 문제들을 정리하기 위한 포스팅.
책 '스프링 부트와 AWS로 혼자 구현하는 웹 서비스'에 따라 배포를 하고 있으나
책에 나온 예시와 사이드 프로젝트의 설정도 다르고 책이 나온 후에 스프링 부트에 여러 가지 변경사항이 있어 책을 그대로 따라 해도 여러 이슈를 접하게 된다.
https://kim6394.tistory.com/m/268
[AWS] 스프링 부트 배포 스크립트 생성
[AWS] 스프링 부트 배포 스크립트 생성 AWS에서 프로젝트를 배포하는 과정은 프로젝트가 수정할 때마다 똑같은 일을 반복해야한다. 프로젝트 배포 과정 git pull 로 프로젝트 업데이트 gradle 프로젝
kim6394.tistory.com
책의 내용에 따라 배포스크립트를 작성하는 방법은 위의 블로그 포스팅에 상세히 적혀 있다.
위의 배포스크립트대로 작성하고 실행했는데 계속해서 에러가 뜨기에 배포 스크립트를 한 줄씩 집적 입력해가며 나오는 에러들을 확인하고 디버그하고 있다.
1. 문제점: no main manifest attributes

jar 파일에서 실행할 main 메소드를 찾지 못할 경우 발생한다.
2. 원인
스프링 부트 2.5.0에선 jar 파일이 두 개 생성되기 때문에 발생하는 오류이다. 스프링 부트 2.5.0 버전에서는 .jar 파일과 함께 -plain.jar가 생성되는데 -plain.jar의 경우 main 메소드의 위치가 제외되어 있기 때문에 -plain.jar를 실행할 경우 main 메소드를 찾지 못 하는 것이 원인이다.
3. 해결방안
이를 해결하기 위해서는 build.gradle에서 jar의 enabled = fals를 설정한다.
jar {
enabled = false
}
그럼 -plain.jar가 생성되지 않는다.
그러나 배포 스크립트를 잘 살펴보면
cp $REPOSITORY/$PROJECT_NAME/build/libs/*.jar $REPOSITORY/
를 입력해 build/libs/ 에 있는 jar 파일을 $REPOSITORY/ 에 복사해서 가져오는 것이다. build/libs에 아직 -plain.jar가 있을 경우 -plain.jar가 복사될 수 있다.
위의 스크립트를 실행한 뒤 $REPOSITORY에 이동해서 ll 명령어를 입력해보면 계속 -plain.jar가 같이 복사되어 있는 경우가 발생한다.

-plain.jar가 여전히 있다.
이럴 경우 $REPOSITORY/에 있는 -plain.jar를 rm 명령어를 통해 삭제하고 cd 명령어로 $REPOSITORY/$PROJECT_NAME/build/libs 로 이동해 여기에 있는 -plain.jar도 rm 명령어를 통해 삭제한다.

그 후 다시 위의 cp 명령어를 입력하고 $REPOSITORY/ 에서 확인해보면 -plain.jar가 없어진 것을 볼 수 있다.
# 참고:
https://dongjuppp.tistory.com/87
no main manifest attribute in 에러
no main manifest attribute in 에러는 spring 애플리케이션을 빌드한 결과물로 나온 jar파일에서 처음 호출할 Main 메소드를 찾지 못했다는 에러다. 주로 jar파일을 "java -jar app.jar" 명령어로 실행을 시킬..
dongjuppp.tistory.com
스프링 부트와 AWS로 혼자 구현하는 웹서비스 후기 (2/2)
약 2주간의 여정이 끝이났다.스프링 시큐리티까지는 버전 간 차이가 크지 않아 진도에 영향이 크지 않았지만,본격적으로 AWS를 시작하면서부터 버전 간 차이로 인해 많이 막히기 시작했다.해결
velog.io
'사이드 프로젝트 > To-do 캘린더 프로젝트' 카테고리의 다른 글
Spring boot 프로젝트 AWS 배포 오류 해결기록(6) (0) | 2022.09.06 |
---|---|
Spring boot 프로젝트 AWS 배포 오류 해결기록(5) (0) | 2022.09.03 |
Spring boot 프로젝트 AWS 배포 오류 해결기록(4) (2) | 2022.09.02 |
Spring boot 프로젝트 AWS 배포 스크립트 오류(3) (0) | 2022.09.01 |
AWS 배포 스크립트 오류(2) (0) | 2022.08.31 |
댓글