gradle multi module에서 하위 pkg에 dependency 된 lib를 상위 pkg가 사용하는 방법을 알아보자!

Karim·2023년 5월 4일
3
post-thumbnail

1. 서론

💬 version

  • multi module 구조에서 하위 pkg에서 사용하는 lib를 상위 pkg 실행 시

    error: package pkg name does not exist

해당 에러에 대한 해결 방안이다.!

2. 시작 전 확인사항

💬 version

IntelliJ : 2022.1.3.Ultimate
gradle : 7.1.1

3. pkg 구조

💡 구조

  1. core pkgjson, lettuce, guava lib를 의존 받고 있다.
  2. app pkgcore pkg의존 받으므로써 위 3개의 lib도 함께 사용하고 싶다.

4. api 를 설정하자!

  • 하위 패키지의존성 라이브러리 설정api 또는 compile로 변경
  • api 또는 compile으로 설정하면 하위 패키지의 라이브러리가 컴파일 시에 상위 패키지까지 전파되어 클래스패스에 추가됨
  • api는 라이브러리를 컴파일 시 클래스패스에 추가하면서, 라이브러리의 public API를 상위 패키지에 노출시키는 역할
  • compile은 api와 유사하지만, Gradle 3.4 버전부터 Deprecated되었으며, 대신 api로 대체

5. build gradle

✒️ build gradle 설정


// 하위 pkg
project(':core') {

    dependencies {
        // api는 라이브러리를 컴파일 시 클래스패스에 추가하면서, 라이브러리의 public API를 상위 패키지에 노출시키는 역할
        api 'org.json:json:20230227'
        api 'io.lettuce:lettuce-core:6.2.4.RELEASE'
        api 'com.google.guava:guava:31.1-jre'
    }
}

// 상위 pkg
project(':app') {

    dependencies {
        implementation project(':core')
    }
}

📌 여담

  • 상위 pkg 실행 시 does not exist 해당 에러에 대한 해결 방안이다.!

📚 참고

profile
나도 보기 위해 정리해 놓은 벨로그

0개의 댓글