기타
[빌드]Gradle 정리
띵유
2022. 3. 11. 17:49
반응형
Gradle은 maven이후에 나온 빌드도구입니다.
maven과의 차이점
maven | gradle | |
처리속도 | 느림 | 빠름 (maven보다 최대 100배 빠름) |
작성언어 | xml | Groovy 스크립트 |
설정파일 | pom.xml | build.gradle |
멀티모듈 | 상속관계 | Configuration injection(설정주입) -> 설정 주입시 프로젝트 조건 설정가능 |
- maven 보다 빠른 이유 : 이미 빌드가 되어있으면 다시 빌드하지 않고 패스함.
- maven은 특정 설정을 몇개의 모듈에서만 공통적으로 사용하게 하려면, 부모프로젝트를 생성해서 자식들이 상속받게 해야합니다. 또 부모중 조금이라도 설정이 다르면 상속받지 못하고 설정을 하나하나 프로젝트에 넣어줘야합니다.
gradel은 공통설정을 조건에 따라서 특정 프로젝트에만 주입이 가능하기 때문에 상속을 위한 프로젝트는 필요가 없습니다.
gradle 대표 용어
- repositories
라이브러리가 저장된 위치
ex) mavenCentral, 넥서스 repository - mavenCentral
기본 Maven Repository - dependencies
라이브러리 사용을 위한 의존성 설정 - 의존성 구성
configuration | discription |
compile | 프로젝트를 컴파일할 때 필요한 의존성 라이브러리들을 추가한다. (gradle 3.0이후 사라짐 -> api, implementaion) |
runtime | 프로젝트를 실행할 때 필요한 의존성 라이브러리들을 추가한다. 기본적으로 컴파일 타임을 모두 포함한다. |
testCompile | 테스트 소스 프로젝트에서 컴파일 시 필요한 의존성을 추가한다. 기본적으로 컴파일 된 클래스들과 컴파일 의존성을 포함한다. |
testRuntime | 테스트가 실행 될 때 필요한 의존성을 추가한다. 기본적으로 컴파일, 런타임과 테스트 컴파일의 의존성도 포함한다. |
api | Project의 일부로 노출되는 소스를 컴파일하는데 필요한 종속성 컴파일타임, 런타임 의존성 모두 있음. |
implemention | 런타임시 이용은 가능하나 컴파일시 다른 모듈로 유출되지 않음. (소스코드 접근 불가) 즉, 런타임 의존성만 있음 |
- api, comile, implementaion 의 차이정리
A(api) <- B <- C : C에서 A 접근 가능. A 수정시 B와 C 모두 재빌드
A(implementaion) <- B <- C : C에서 A 접근 불가능. A 수정시 B까지 재빌드
예시
참조)
반응형