스프링부트 빌드도구
빌드도구란
- 소스코드를 컴파일, 테스트, 등을 실행하여 실행 가능한 애플리케이션으로 자동 생성하는
프로그램
- 스프링부트의 빌드도구로는 maven, gradle 이 있음
- gradle의 dependencies는 스프링 부트 프로젝트를 빌드할 때 필요한 외부라이브러리 혹은
다른 모듈을 정의하고 관리하는 코드블록 !!
Maven
- xml 형태
- 프로젝트에 필요한 의존성을 리스트의 형태로 Maven에게 알려서 종속성을 관리함
- 계층적인 데이터를 표현하기에 좋지만 플로우나 조건부 상황을 표현하기 어려움
Gradle
- 오픈소스 기반의 Build 자동화 도구
- Maven보다 빌드 속도가 훨씬 빨라 스프링부트 혹은 안드로이드(java) 개발 빌드도구로
널리 사용된다
jar와 war 차이
jar
- 독립적으로 실행되는 자바 프로그램
- 압축된 형식으로 클래스, 리소스, 라이브러리 등을 포함하므로 배포가 용의하다
- JVM에서 직접 실행하기 때문에 웹 컨테이너나 WAS가 필요 없다
- 반드시 실행메소드(애플리케이션의 시작점)인 main 메소드를 포함하고 있어야 한다 !!
- 배포용 혹은 타 프로젝트에서 참조해서 사용하려는 모듈용으로 쓰임 !!
war
- java 웹 애플리케이션을 패키징하는데 최적화되어 있고 jsp, 서블릿 등과 웹 애플리케이션을
실행하기 위한 서블릿 컨테이너에서 필요한 설정파일 및 라이브러리 등을 포함하여 배포 및 실행할수 있는
파일
- 독립적으로 실행하는게 아닌 특정 was(Tomcat, WebSphere)에 종속적이기 때문에 특정 웹 컨테이너 환경이 필요하다
- jar 파일에 비해 크기가 크고 배포하기 번거로움 !!
- Tomcat은 무료 WebSphere(유료 IBM 사에서 제공)
gradlew vs gradle
- gradle은 실제 빌드도구이고 gradlew은 gradle을 실행할 수 있게 도와주는 스크립트