본문 바로가기

Spring

[Spring] Gradle 빌드 할때 2개의 jar 파일 + 해결 방법 (executable jar && Plain jar)

728x90
반응형
SMALL

Spring Gradle Build

https://jk25.tistory.com/180

 

[Spring] Gradle jar 빌드파일 만들기 (Feat.Intellij && Terminal)

빌드 파일을 만드는 이유 웹을 개발 하는데 있어서 중요한 것 중 하나가 바로 배포 이다. Spring Boot 프로젝트를 배포 하는 방법 중 하나인 Gradle을 사용하여 Jar 파일 빌드 및 실행 하는 방법에 대해

jk25.tistory.com

  • 이전 포스팅 글에서는 다루지 않았던 내용에 대해서 포스팅 하고자 한다.

빌드 파일이 2개

  • 저번 포스팅에서 build를 하는 과정에서 .jar 파일이 2개가 생기는 현상을 발견했다.

 

build 파일 2개

  • 하나는 plain 이라는 이름이 붙은 파일이 하나 생겼다.

파일 용량 확인

  • 파일 용량을 확인 해 보았을 때, 두개의 용량의 차이가 있는 것을 확인 했고 두개는 다른 파일이겠구나 생각이 들었다.
  • 그렇다면 plain이 붙은 건 뭐지?

Plain Archive

  • plain archive 는 작성된 소스코드의 클래스 파일과 리소스 파일들 만을 포함한다고 한다 (내가 구현한 프로젝트 자체를 실행 할 수 있는 압축 파일이 아니라고 본인은 이해) [따라서, java -jar 명령어로 실행이 안된다는 말이기도 하다.]
  • 다른 말로는 standard, thin 이라는 이름을 쓰기도 한다고 한다.

 

Executable Archive

  • plain 키워드가 없는 것은 executable archive 라고 하며, 필요한 모든 의존성들을 함께 빌드 하는 것이므로 plain과 다르게 실행이 가능한 압축 파일이다.
  • fat jar 이라고 부르기도 한다고 한다.

Spring Boot 버젼


해결 방법

  • build.gradle 파일에 아래 코드를 추가해주면 된다.
jar {
    enabled = false
}
  • Gradle 로 빌드를 진행 할때, (build) bootJar 와 Jar 두개의 task가 모두 실행이 되어서 .jar 파일이 생기는 것인데 plain jar 를 생성하고 싶지 않다면 jar 실행을 하지 않게 만들어준다는 것으로 이해하고 있음

해당 코드를 넣기 전

 

해당 코드를 넣은 후

 

jar 프로세스 스킵된거 확인

 

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.2.0'
    id 'io.spring.dependency-management' version '1.1.4'
}

group = 'com.lec.spring'
version = '0.0.1-SNAPSHOT'

java {
    sourceCompatibility = '17'
}

jar {
    enabled = false
}

repositories {
    mavenCentral()
}


dependencies {

}

tasks.named('test') {
    useJUnitPlatform()
}

 

 

 

 

 

 

참고 [감사합니다]

 

[Spring boot, Gradle] Spring boot 2.5 이상에서 빌드 시 2가지 jar가 생성(executable jar, plain jar)

들어가기 전... github action으로 spring boot 프로젝트 배포하기 실행 중 Git action과 AWS CodeDeploy에서는 정상으로 뜨는데 서버실행이 되지 않아 서버를 살펴보니 아래 사진과 같이 nohup로 백그라운드 실

velog.io

 

728x90
반응형
LIST