티스토리 뷰

ALL/Spring Boot

[Gradle] Tasks build bootJar

whoAmI_ 2023. 8. 21. 12:35

 

스프링부트로 프로젝트 생성 후 JAR로 배포를 해야 하는 상황이다. 
서버에는 WAS가 없는 상태이고, 부트에서 내장서버 포함하여 JAR로 배포를 해야한다.
톰캣이 깔려있었다면 WAR로 말아서 서버에 배포를 하면 되었을거다.

이클립스로 Runnable jar로 말면 된다고 하는데, 인텔리제이로 빌드해본적이 없어서 어떻게 하는지 찾아보니
bootJar 라는거로 빌드하면 실행가능한 jar파일이 생성된다고 한다.


fatJar로 말으라는 얘기를 들어서, fatJar는 뭔지 또 찾아보다보니 내 궁금증을 해결해 준 블로그 글이 있어 링크를 남겨둔다. 

일단, 빌드할 때 생성되는 war, jar 등을 Archive라고 한다. 컴파일한 class, 리소스파일 등을 다른 트리형태로(war/jar) 압축한 것을 Archive(아카이브)라고 부르는 것이다. JVM이 JRE에 올려서 classpath를 찾아서 실행시켜준다. Executable Archive라고 하며, Fat jar, Boot jar, Excutable jar, Uber jar라고 불린다.


plain.jar는 Plain Archive라고 하며, 어플리케이션에 필요한 모든 의존성을 포함하지 않고, 작성된 소스코드의 클래스파일과 리소스파일만 포함한다. 그리고 기본적으로 메인함수의 classpath를 manifest에 명시해주지 않아서 바로 실행할 수 없다. plain jar의 또 다른 이름은 Thin jar, standard jar, Not Excutable jar라고 불린다.

스프링부트는 이러한 패키징 접근 방법을 대중화하여 앱 실행이 번거롭지 않은 작업이 되도록 했다고 한다.

처음에 fatjar로 말으라는 얘기를 듣고, build.gradle에 fatjar를 만드는 스크립트를 추가해야한다고 얘기를 들었는데, 아래 글에도 나와있듯이 예전에 fatjar를 만들기 위한 방식이었던것 같다.

부트에서 실행가능한 jar를 만들기 위해서는 Gradle - Tasks - bootjar로 진행하면 된다.

 

https://code-boki.tistory.com/90

 

jar Build Task(Feat. thin/plain, fat/uber) + no main manifest attribute in ...

우선 프로젝트를 만들때 Spring initializer로 만들면 IDE가 배포 패키징(아카이빙)을 WAR로 할지, JAR로 할지 선택하라고 한다 그리고 의존성 관리는 Maven(Pom.xml)로 할건지, Gradle(build.gradle-Groovy)로 할건

code-boki.tistory.com

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함