42percent / 42percent_server

1 stars 0 forks source link

Gradle 빌드 종속성 추가 유형 #19

Open JiSeungGu opened 4 years ago

JiSeungGu commented 4 years ago

Dependencies - 저장소에서 필요한 라이브러리를 사용하기위한 문장

종속 항목 유형


프로젝트에 종속 항목을 추가하려면 build.gradle 파일의 dependencies 블록에 implementation과 같은 종속 항목 구성을 지정

Dependencies 블록내 종속 항목 유형

1. Implementation 2. Api 3. CompilOnly 4. RuntimeOnly 5. AnnotationProcessor

* Implementation

    Gradle이 컴파일 클래스 경로에 종속 항목을 추가하고 빌드 출력에 종속 항목을 패키징 모듈에서 implementation 종속 항목을 구성하면, 모듈이 컴파일 시간에 종속 항목을 다른 모듈에 누출하기를 바리지 않는다는 것을 알려주는것. 즉 종속 항목은 런타임에만 다른 모듈에서 이용

의존 라이브러리 수정시 본 모듈까지만 재빌드 A(implementation) <- B <- C 일 때, C 에서 A 를 접근할 수 없음 A 수정시 B 까지 재빌드

* API

    Gradle은 컴파일 클래스 경로와 빌드 출력에 종속 항목을 추가 모듈에 api 종속 항목이 포함되면 모듈이 다른 모듈로 종속 항목을 이전하여 다른 모듈에서 런타임과 컴파일 시간에 사용할 수 있도록 한다는 것을 Gradle에 알려주는 것 API 종속 항목이 외부 API를 변경하면 Gradle이 컴파일 시 종속 항목에 액세스 권한이 있는 모든 모듈을 다시 컴파일하기 때문입니다. 따라서 API 종속 항목 수가 많으면 빌드 시간이 크게 증가할 수 있음

의존 라이브러리 수정시 해당 모듈을 의존하고 있는 모듈들 또한 재빌드 A(api) <- B <- C 일 때, C 에서 A 를 접근할 수 있음 A 수정시 B 와 C 모두 재빌드

* CompileOnly

    Gradle은 컴파일 클래스 경로에만 종속 항목을추가 빌드 출력에는 추가되지 않음

* RuntimeOnly

    Gradle은 런타임 동안 사용하기 위해 빌드 출력에만 종속 항목을 추가 컴파일 클래스 경로에는 추가되지 않음

* AnnotationProcessor

    주석 프로세서인 라이브러리에 종속 항목을 추가하려면 annotationProcessor 구성을 사용하여 주석 프로세서 클래스 경로에 추가해야 함, 이 구성을 사용하면 컴파일 클래스 경로를 주석 프로세서 클래스 경로에서 분리하여 빌드 성능이 개선

음.. 라이브러리 수정시에 필요한 라이브러리를 선택적으로 하고 필요없으면 재빌드 하지 않으며 돌아가는 부분에따라서 나눠지는거라 생각함


Gradle Dependency - API와 Implementation 차이 https://jongmin92.github.io/2019/05/09/Gradle/gradle-api-vs-implementation/

의존성 옵션 https://m.blog.naver.com/webwizard83/221520659238

빌드 종속성 https://developer.android.com/studio/build/dependencies

pmw9027 commented 4 years ago

아주 유용해요