본문 바로가기
사이드 프로젝트/To-do 캘린더 프로젝트

AWS 배포 스크립트 실행 오류(1)

by Baley 2022. 8. 29.

현재 사이드 프로젝트를 배포하면서 겪고 있는 문제들을 정리하기 위한 포스팅.

책 '스프링 부트와 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

https://velog.io/@kimsy8979/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B6%80%ED%8A%B8%EC%99%80-AWS%EB%A1%9C-%ED%98%BC%EC%9E%90-%EA%B5%AC%ED%98%84%ED%95%98%EB%8A%94-%EC%9B%B9%EC%84%9C%EB%B9%84%EC%8A%A4-%ED%9B%84%EA%B8%B0-22

 

스프링 부트와 AWS로 혼자 구현하는 웹서비스 후기 (2/2)

약 2주간의 여정이 끝이났다.스프링 시큐리티까지는 버전 간 차이가 크지 않아 진도에 영향이 크지 않았지만,본격적으로 AWS를 시작하면서부터 버전 간 차이로 인해 많이 막히기 시작했다.해결

velog.io

 

댓글