Gradle : Groovy를 기반으로 한 오픈소스 빌드 도구, 빌드 자동화 시스템
빌드 : 소스코드를 컴파일, 테스트, 정적분석 등을 실행하여 실행 가능한 애플리케이션으로 만들어주는 과정
-> 시대가 변화면서 다양한 라이브러리의 등장으로 인한 문제점 발생
--> 1) 라이브러리 다운로드 및 추가 번거로움
--> 2) 개발자들 간의 버전관리 어려움
--> 3) 다운받은 jar 파일의 보안 위험
빌드 도구 : 계속해서 늘어나는 라이브러리를 자동 추가 및 관리, 프로젝트를 진행하며 라이브러리 버전을 쉽게 동기화 할 수 있도록 도와줌
--> Gradle은 빌드 도구로 전체적 빌드과정을 편리하게 해주는 도구
Groovy : JVM 상에서 실행되는 스크립트 언어, Java와 유사한 문법구조를 가지며 호환성이 아주 좋다.
Gradle의 장점
1) 프로젝트 설정 주입(Configuration Injection) 방식으로 정의
2) 멀티 프로젝트 빌드
3) 빌드 속도가 빠름
프로젝트 설정 주입 방식 정의 : 필요한 정보가 있으면 프로젝트에 주입하는 것(Maven의 상속 구조보다 재사용 및 중복제거에 용이, 프로젝트의 조건을 체크할 수 있어 프로젝트별 주입되는 설정을 다르게 할 수 있다)
멀티 프로젝트 빌드 : 하나의 repository내 여러 하위 프로젝트 구성 가능(공통된것 따로, 각각 하나씩 가능)
--> ex) 관리자, 사용자 서버 분리 진행의 경우 각각 gradle 사용 가능
빌드 속도가 빠름
1) 점진적 빌드 : 마지막 빌드 호출 이후 task의 입력, 출력, 혹은 구현이 변경을 확인하여 변경되지 않았다면 빌드 실행하지 않음
(변경되지 않은 부분에 있어 불필요한 중복 빌드가 일어나지 않음)
2) 빌드 캐시 : 빌드 결과물을 캐싱해두었다가 하나의 빌드에서 사용되는 파일들이 다른 빌드에서 사용된다면 캐시된 파일을 재사용(중복 빌드 줄임)
3) 데몬 프로세스 : 서비스의 요청에 응답하기 위해 오래 동안 살아있는 프로세스
--> 메모리 상에 빌드 결과물 보관(한번 빌드된 프로젝트는 다음 빌드에서 매우 적은 시간만 소요)
--> 점진적 빌드와 차이점은 빌드 사이에 다음 빌드를 유지하고 있다는 의미
--> 그래들을 빌드할때마다 초기화하는 시간에 영향을 주고 빌드 캐싱을 보다 효과적으로 허용할 수 있다는 점에서 데몬 프로세스는 도움이 됨
다양한 부분에서 빌드 성능 최적화 되어 Maven보다 거의 모든 시나리오에서 2배 이상 거의 100배 빠르다고 기록
실제로 많이 사용되는 것은 Maven이지만, Gradle은 성능상 많은 이점을 가지고 있음
Gradle 활용
--> 플로그인, 의존성 설정
--> 의존성 : B객체가 A를 사용한다(B->A)
--> api는 내부 의존성을 컴파일과 런타임 모두에게 보이게 됨, implimentation 내부 의존성을 컴파일 시 보이지 않게(의존성 최소화-빌드속도 증가)
--> api는 A가 수정되었을 시 B와 C가 A를 알고있기에 B뿐만 아니라 C 모두 재빌드
--> implimentation은 A가 수정되었을 시 B까지만 재빌드