반응형
일반적으로 Gradle로 jar를 빌드하게 되면
의존성을 설정한 외부 라이브러리(dependency)들은 포함이 되어있지 않다. dependency가 모두 포함된 jar로(fat jar) 빌드하기 위해서는 jar 빌드 시 아래 설정들을 추가해준다.
적용한 gradle 버전은 7.4 기준이다.
jar{
enabled=true
archiveClassifier = '' // use empty string
from { // 의존성 포함
configurations.runtimeClasspath.collect {
it.isDirectory() ? it : zipTree(it)
}
}
duplicatesStrategy = DuplicatesStrategy.EXCLUDE // 중복처리
}
설정된 jar로 빌드를 하고 압축을 풀어보면 다음과 같이 모든 의존성이 포함이 되어 있다. 의존성들이 jar형태가 아닌 압축이 모두 풀려있다.
조금 더 간단하게는 Shadow라는 Gradle Plugin을 사용하는 방법도 있다.
https://github.com/johnrengelman/shadow
이 Plugin을 적용해도 동일하게 jar가 빌드되는데 설정은 다음과 같다. plugin을 선언하고, jar 빌드 시 shadowJar가 실행되도록 finalizedBy를 설정해준다.
plugins {
id 'org.springframework.boot' version '2.6.7'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
id 'com.github.johnrengelman.shadow' version '7.1.2' // Shadow
}
...
jar{
enabled=true
archiveClassifier = ''
finalizedBy shadowJar // shadowJar Task 실행
}
빌드를 하게 되면 일반 jar파일과 xxxx-all.jar 파일 2개가 생기는데 xxx-all.jar 파일을 풀어서 보면 다음과 같다.
반응형
'개발 > 기타' 카테고리의 다른 글
Oracle 비밀번호 만료(ORA-28001: the password has expired) (0) | 2023.08.13 |
---|---|
git fatal: the remote end hung up unexpectedly 오류 조치 (0) | 2023.07.30 |
poi SXSSFWorkbook createSheet FontConfiguration NullPointException (0) | 2023.07.03 |
DBeaver posgresql JDBC 드라이버 수동 설정 (0) | 2023.06.19 |
PostgreSQL 문자열 합치기 (0) | 2023.05.29 |
댓글