2012년에 출시된 Grovvy를 기반으로 한 오픈소스 빌드 도구로,
거의 모든 타입의 스프트웨어를 빌드할 수 있는 빌드 자동화 시스템
잠깐! Groovy란?
장점
프로젝트를 설정 주입(configuration injection) 방식으로 정의
멀티 프로젝트 빌드
빌드 속도가 빠름
점진적 빌드(Incremental Builds)
모든 Gradle script는 하나 이상의 project로 구성되며, 모든 프로젝트는 하나 이상의 task로 구성된다.
Project : 소스를 jar로 모으거나, 자바 프로젝트를 컴파일하거나, 테스트를 실행하고, 어플리케이션을 배포하는 등의 업무로 구성된다.
Task : 작업의 최소단위이다. Task 간 의존관계 설정과 함께 흐름에 따른 구성이 가능하며, 동적인 테스크의 생성도 가능하다.
1) 초기화 initialization : 빌드 대상 프로젝트를 결정하고 각각에 대한 project 객체를 생성
settings.gradle 파일에서 프로젝트 구성 (멀티 프로젝트, 싱글 프로젝트 구분)
2) 구성 configuration : 빌드 대상이 되는 모든 프로젝트의 빌드 스크립트 실행 (프로젝트 객체 구성) – configured Task 실행
3) 실행 execution : 구성 단계에서 생성하고 설정된 프로젝트의 테스크 중에 실행 대상 결정. Gradle 명령행에서 지정한 테스크 이름 인지와 현재 디렉토리를 기반으로 테스크를 결정하여 선택된 task들을 실행
Plugin은 미리 구성해놓은 task들의 그룹이며, 특정 빌드 과정에 필요한 기본정보를 포함하고, 필요에 따라 정보를 수정하여 목적에 맞게 사용할 수 있다.
Gradle은 Maven repository, Jcenter repository, Ivy directory 등 다양한 저장소를 지원한다.
Repositories로 다운받은 jar는 $USER_HOME/.gradle/caches/modules-2/files-2.1/ 경로에 캐시된다.
api
- 내부 의존성을 컴파일과 런타임 모두에 보이게 함.
implementation
- 내부의존성을 런타임에서만 보이게 함.
compileOnly
- 컴파일에만 사용되는 의존성 정의
RuntimeOnly
- 런타임에만 사용되는 의존성 정의
Test + implementation, compileOnly, RuntimeOnly
- 해당 의존성을 테스트 시에만 사용하도록 정의!
아래 코드를 사용하여 jUnit5를 사용할 수 있다. 위에 springboot stater test를 통해서 dependency 주입되어 테스트가 가능하다.