EC2에서 스프링 부트 프로젝트를 gradlew로 빌드하던 중, 로그에 no main manifest attribute라는 에러가 나왔다.

no main manifest attribute, in /home/ec2-user/app/step1/springboot-webservice-1.0-SNAPSHOT-plain.jar
no main manifest attribute in은 jar파일에서 처음 호출할 Main 메소드를 찾지 못해 발생하는 에러라고 한다.
build.gradle에 메인 메소드 위치를 명시하거나 의존성으로 해결할 수 있는데 내 경우는 이게 아니었다.
spring boot 2.5.0버전 이상부터는 gradle로 빌드를 할때 jar파일이 2개 생성된다. (참고: StackOverflow)

.jar-plain.jar즉, 내 스크립트 파일이 두 개의 jar 중 -plain.jar 파일을 실행했기 때문에 Main 메소드를 찾지 못해서 발생한 오류였다.
나는 plain jar 파일이 필요하지 않아 아예 생성되지 않도록 하고 싶다.
두 번째 코드블럭을 보면 disable its task 하는 방법, 즉 plain jar를 생성하는 jar task를 비활성화하는 방법이 나와 있다.

참고로 버전마다 적용 방법이 다르니 직접 찾아보아야 한다.
스프링 부트 2.7.14 공식문서
https://docs.spring.io/spring-boot/docs/2.7.14/gradle-plugin/reference/htmlsingle/#packaging-executable.and-plain-archives
(자신의 스프링 부트 버전에 맞게 URL 중간의 숫자를 변경하면 된다)
위에서 찾은 코드를 build.gradle 파일에 추가해주고 다시 빌드하면
tasks.named("jar") {
enabled = false
}
로그에서 Task :jar SKIPPED를 확인할 수 있다.

이렇게 하면 EC2에서 배포 스크립트도 의도대로 작동한다!
