Base/CI, CD
Gradle api, implements 차이
findmypiece
2021. 4. 19. 15:29
728x90
차이는 하위 모듈에 해당 의존성이 상속되느냐 마느냐 이다.
예를 들어 아래와 같이 멀티 프로젝트를 구성한다고 가정해보자.
common
api
batch
여기에서 common 은 공통모듈이고
api, batch 에서 공통으로 사용할 코드가 포함되어 있다.
이에 api, batch build.gradle 에서는 아래와 같이 common 을 참조하고 있을 것이다.
dependencies {
implementation project(":common")
...
}
common에 아래와 같은 의존성을 정의한다고 가정해보자.
implementation "com.google.guava:guava"
이 경우 api, batch 에 guava 의존성이 상속되지 않기 때문에
필요하다면 각각 다시 의존성을 정의해야 한다.
하지만 아래와 같이 한다면 의존성이 상속되기 때문에
api, batch 에서는 별다른 의존성 설정없이 guava를 사용할 수 있다.
api "com.google.guava:guava"
일반적으로 implements를 많이 사용한다.
과도한 의존성 상속을 막아주고 꼭 필요한 의존성만 명시적으로 사용할 수 있게 해주기 때문이다.
추가로 api 지시어를 사용하려면 아래 플러그인이 필수로 필요하다.
plugins {
id 'java-library'
}
728x90