Source : https://dongjuppp.tistory.com/87
현재 프로젝트는 gradle 을 사용중이기때문에, 일부만 발췌
spring boot 2.5.0버전 이상부터는 gradle로 빌드를 할때 jar파일이 2개 생성된다.
앱이름.jar -> bootJar Task로 생성된것
앱이름-plain.jar -> build Task로 생성된것
첫번째 jar는 해당 프로젝트에 필요한 모든 의존성이 같이 추가된것으로 MANIFEST.MF까지 모두 정상적인 형태로 나온다.
하지만 plain.jar는 의존성을 제외하고 딱 프로젝트에 있는 자원들만 jar로 만든것으로 spring 관련 의존성이 빠져 MANIFEST.MF에 Main메소드의 위치가 나오지 않는다.
여기서 앱이름-plain.jar를 java -jar로 실행하면 no main manifest attrubute in에러가 발생한다.
앱이름-plain.jar를 생성하지 않기 위해서는 아래 명령어를 build.gradle에 추가해 주자
jar {
enabled = false
}