개발을 하다보면 자주 보는 몇 가지 단어가 있다. 그 중에서 Maven
과 Grable
을 각각 스프링과 스프링부트에서 본적이 있을 것이다.
우선 이 둘은 빌드 관리 도구이다.
소스코드 파일을 컴파일에서 실행할 수 있는 가공물로 변환하는 과정 또는 결과물이다. 다시말하면 우리 작성한 소스코드(java), 프로젝트에서 쓰인 각각의 파일 및 자원등(.xml,jpa,jpg,properties)을 jvm이나 톰캣같은 WAS가 인식할 수 있는 패키징하는 과정 및 결과물이라고 할 수 있다.
소스코드에서 어플리케이션 생성을 하면서 여러가지 여부 라이브러리를 사용하는데, 이 빌드 관리 도구는 사용자가 직접 관리할 필요 없이 필요한 라이브러리들을 자동으로 관리한다.
초기의 Java빌드 도구로는 Apache Ant를 많이 사용했지만 스크립트 작성도 많고, 라이브러리 의존관리가 되지 않는다는 불편함으로 최근에는 Maven과 Gradle이 많이 쓰인다.
- 자바 전용 프로젝트 Lifecycle 관리 목적 빌드 도구이며 Apache Ant 불편함을 해결코자 만들어졌으며, 스프링에서 사용된다.
pom.xml
에 정의한다.플러그인
에 위임한다. 이러한 플러그인들은 Maven저장소(Repository)
에 저장되어 진다. 중앙저장소→로컬저장소(개발자 PC)
로 다운로드하게 되어있다. 그리고 로컬저장소의 기본 위치는USER_HOME/.m2/repository
인데, setting.xml
를 통해 원하는 로컬 저장소의 경로를 지정 및 변경할 수 있다. pom.xml
에 정의하면, 해당 라이브러리 실행, 설치에 필요한 다른 라이브러리까지 관리하고 네트워크를 통해서 자동으로 다운받아준다. 단계 | 내용 |
---|---|
Default(Build) | 일반적인 빌드 프로세스를 위한 모델이다. |
Clean | 빌드 시 생성되었던 파일들을 삭제하는 단계 |
Validate | 프로젝트가 올바른지 확인하고 필요한 모든 정보를 사용할 수 있는지 확인하는 단계 |
Compile | 프로젝트의 소스코드를 컴파일 하는 단계 |
Test | 유닛(단위) 테스트를 수행 하는 단계(테스트 실패시 빌드 실패로 처리, 스킵 가능) |
Pacakge | 실제 컴파일된 소스 코드와 리소스들을 jar, war 등등의 파일 등의 배포를 위한 패키지로 만 드는 단계 |
Verify | 통합 테스트 결과에 대한 검사를 실행하여 품질 기준을 충족하는지 확인하는 단계 |
Install | 패키지를 로컬 저장소에 설치하는 단계 |
Site | 프로젝트 문서와 사이트 작성, 생성하는 단계 |
Deploy | 만들어진 package를 원격 저장소에 release 하는 단계 |
Maven을 대체할 수 있는 프로젝트 구성 관리 및 범용 빌드 툴이며 Ant Builder와 Groovy Script를 기반으로 구축되어 기존 Ant의 역할과 배포 스크립의 기능을 모두 사용가능하며 스프링부트와 안드로이드에서 사용된다.
간결한 정의
가 가능하다.설정 주입 방식(Configuration Injection)
으로 정의하여 Maven의 상속 구조보다 재사용에 용이하다. Build Script
를 xml이 아닌 Groovy
기반의 DSL(Domain Specific Language)
를 사용하여 코드로서 설정정보를 구성하기 때문에 구조적인 장점이 있다. Gradle Wrapper
를 이용하여 빌드를 지원한다.
JVM
에서 사용되는 스크립트 언어로, 문법이 Java와 매우 유사하다. Java와 호환이 되며 Java 클래스 파일을 그대로 Groovy 클래스 파일로 사용 가능.
단계 | 내용 |
---|---|
1) 초기화(initialization) | 빌드 대상 프로젝트를 결정하고 각각에 대한 Project객체를 생성한다. settings.gradle 파일에서 프로젝트 구성한다. |
2) 구성(Configuration) | 빌드 대상이 되는 모든 프로젝트의 빌드 스크립트를 실행한다. |
3) 실행(Execution) | 구성 단계에서 생성하고 설정된 프로젝트의 태스크 중에 실행 대상을 결정한다. gradle 명령행에서 지정한 태스크 이름 인자와 현재 디렉토리를 기반으로 태스크를 결정하여 선택된 태스크들을 실행한다. |
둘다 사용해보기 전에 조사하는 과정에서 Maven이 아직까지 많이 쓰이고 있지만 늦게 나온만큼 Maven과 Ant의 장점들을 모아서 만들어졌기 때문에 Gradle이 편리하고 빠르다고 한다.
나중에 직접 각각의 빌드 관리 도구 프로그램을 사용한 뒤에 느낀 차이점과 편리함에 대해 설명하는 글을 덧붙여야 할 것 같다.
덕분에 좋은 내용 잘 보고 갑니다
감사합니다.