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
'Base > CI, CD' 카테고리의 다른 글
Nexus와 Maven Central (2) | 2021.05.21 |
---|---|
maven 인코딩 설정 (0) | 2021.05.18 |
gradle 에서 maven optional, provided 설정하기 (0) | 2021.05.05 |
maven 커멘트 옵션 정리 (0) | 2021.04.23 |
Gradle 의존성 버전 관리 (0) | 2021.04.07 |