기타

[빌드]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까지 재빌드




예시

출처:&nbsp; https://jjaekjjaek.tistory.com/entry/Gradle-가이드라인#_Toc380586548&nbsp;


참조) 

https://jjaekjjaek.tistory.com/entry/Gradle-%EA%B0%80%EC%9D%B4%EB%93%9C%EB%9D%BC%EC%9D%B8#_Toc380586548

https://stackoverflow.com/questions/44413952/gradle-implementation-vs-api-configuration/44419574#44419574

https://bepoz-study-diary.tistory.com/372

반응형