Java 를 빌드할 때 생성되는 Plain.jar 파일을 제거하는 방법
1. Plain vs Executable Archive
- Spring Boot 2.5 version 이상부터 Gradle 빌드 시 아래와 같은 명명 규칙으로 jar 파일이 2개 생성됩니다.
- <Project>-<Version>.jar
- <Project>-<Version>-plain.jar
Java 빌드 후 Jar 파일 생성
실제 Java 를 구동함에 있어 필요한 jar 파일은 첫 번째 것인데, plain.jar 는 무엇이고 어떻게 제거하는 지 알아보겠습니다.
1.1. Plain Archive
plain.jar 를 Plain Archive 라고도 하는데,
여기서 plain 은 해당 JAR 파일이 특별한 라이브러리나 의존성 없이 오직 프로젝트 소스 코드만 포함하고 있음을 의미합니다.
그렇다는 것은, 모든 의존성이 존재하지 않기 때문에 java -jar 로 실행 시 에러가 발생합니다.
Plain Archive 는 Gradle 의 jar task 로 생성됩니다.
1.2. Executable Archive
plain.jar 가 아닌 실제 애플리케이션 실행에 필요한 jar 파일을 Executable Archive 라고 지칭합니다.
여기에는 애플리케이션 실행에 필요한 모든 의존성이 함께 빌드되어 있기 때문에,
java -jar 명령어로 실행이 가능합니다.
- Executable Archive 는 Gradle 의 bootJar task 로 생성됩니다.
2. Plain Archive 제외
2.1. build.gradle 파일 설정
Plain Archive 를 빌드 과정에서 제외시키는 것은 굉장히 단순합니다.
build.gradle 에 아래 설정을 추가하면 끝입니다.
jar {
enabled = false
}
build.gradle 수정
빌드 진행 후 Jar 확인
빌드 후 Plain.jar 가 사라짐
참고 문서
- Spring Boot 2.5.0 generates plain.jar file. Can I remove it? - StackOverflow
- Plain jar vs Executable jar (feat. plain jar 생성 방지) - Blog
- 4.3. Packaging Executable and Plain Archives - Spring Docs