공식 문서에 따르면 거의 모든 유형의 소프트웨어를 빌드할 수 있을 만큼 유연한 빌드 자동화 도구입니다.
Groovy 기반의 스크립트 언어로서 유연성을 갖는다
성능 측면에서 유리한 빌드 도구
Configuration Injection 방식을 통해 편리한 멀티 프로젝트 빌드를 지원한다.
빌드란? 소스 코드를 실행 가능한 파일로 변환 해주어야 하는데 이것을 빌드라고 합니다.
빌드 도구는 코드를 실행가능한 파일로 만들어주는 과정 및 라이브러리 관리, 테스팅 등을 자동화여 수행
빌드 캐시:
- 빌드 결과물을 캐싱하여 재사용, 라이브러리 의존성을 캐시로 이전에 다운로드한 라이브러리 사용
점진적 빌드 :
- 마지막 빌드 호출 이후 변경된 부분만 빌드
- 변경되지 않은 부분은 캐시 결과를 검색해 재사용
- 테스트의 입력, 출력 혹은 변경되지 않은 부분을 빌드하지 않음
데몬 프로세스 사용 :
- 다음 빌드 작업을 위해 백그라운드에서 대기하는 프로세스
- 초기 빌드 이후 빌드 실행시 초기화 작업을 거치지 않음
- 이로 인해 한번 빌드된 프로젝트는 다음 빌드에서 매우적은시간 소요
멀티 프로젝트(멀티 모듈)이란?
- 공통되는 도메인을 사용하는 프로젝트를 하나의 프로젝트로 묶어서 관리하는 것이다.
Gradle은 각 프로젝트가 공통으로 사용하는 클래스를 모듈로 만들어 독립적인 각 프로젝트에서 사용할 수 있도록 한다.
- root 프로젝트 : 공통 모듈 멤버를 사용하는 관리자, 일반 회원 프로젝트를 묶는 프로젝트
- 공몽 모듈 : 각 프로젝트에서 사용되는 클래스를 하나의 모듈로 저장한다.
gradle은 독립적인 두 프로젝트에서 멤버 모듈을 사용할 수 있도록 도와준다.
다음 사진들은 현재 진행중인 프로젝트 사진이다.
하위 프로젝트 설정
프로젝트 별로 의존성 추가 가능하다
공통적인 의존성 관해서는 서브 프로젝트에서 관리 가능하다
지금과 같은 방식이 가능한 이유는- Configuration injection 설정 주입 방식으로
- 필요한 정보를 직접 프로젝트에 주입하는 방식
- 공통되는 정보는 묶어서 주입 가능
- 프로젝트 별로 설정을 다르게 주입가능
- Maven의 상속구조와 비교했을 때 가독성 측면에서 우월
라이브러리의 역할을 하는 모듈에는 실행하지 않는다는것을 명시하기 위해 위와 같은 코드를 명시해준다.
common, integration