1. 개요
스프링부트 빌드 시 위와 같이, jar파일이 만들어진다.
실제로 사용하는 거는 .jar인데 대체 plain.jar는 왜 만들어지는지 궁금해졌다.
2. Executable Jar vs Plain Jar
.jar
- Executable Archive 또는 Executable Jar라고 부른다.
- 애플리케이션 구동에 필요한 모든 의존성이 포함되어 있다.
- bootJar 작업에 만들어진다.
plain.jar
- Plain Archive 또는 Plain Jar라고 부른다.
- executable jar와 달리 모든 의존성을 포함하지 않고 클래스와 리소스 파일만 포함되어 있다. 즉, 실행가능하지 않다.
- Jar 작업에 만들어진다.
- 라이브러리 형태로 재사용할 때 주로 쓰인다고 한다.
그렇다면 plain.jar는 도대체 왜 생기는 걸까..?
⇒ 스프링부트 버전 별로 다르지만 3.3.4버전에는 빌드 시 둘 다 생성되게 설정이 되어있다.
https://docs.spring.io/spring-boot/gradle-plugin/packaging.html
Plain Jar가 필요하지 않다면 아래 코드를 build.gradle에 넣어서 비활성화 할 수 있다.
tasks.named("jar") {
enabled = false
}
추가로 아래 두 개의 차이는 뭔지 궁금해졌다.
jar{
enabled = false
} //1번
tasks.named("jar") {
enabled = false
} //2번
1번
- Gradle DSL을 사용해서 직접적으로 jar 작업 블록에서 enabled 속성을 false로 설정하는 선언적 방식이다.
- Gradle이 이 블록을 처리하는 순간 바로 jar 작업이 비활성화된다.
2번
- Gradle 5.1 이후 추가된 lazy configuration 방식으로 Gradle이 특정 작업을 실제로 참조하거나 실행할 때 설정을 적용하는 방식이다.
- 작업의 실행 시점에 설정이 적용되기 때문에 성능 최적화 측면에서 더 좋다.
결론적으로, 2번 방식이 성능 면에서 더 좋기 때문에 현재 더 권장된다고 한다!
728x90
'study > Server' 카테고리의 다른 글
Caddy로 도메인 없이 https 설정하기 (1) | 2024.09.07 |
---|---|
HTTP 응답 헤더, Content-Disposition (0) | 2024.08.01 |
[error] Node.js Error <SyntaxError: Cannot use import statement outside a module> (0) | 2023.11.20 |