앞서 생성한 여러 모듈을 함께 사용해보도록 하겠습니다.
(언어는 Java 로 작성합니다.)
필요한 클래스 및 인터페이스는 다음과 같습니다.
SampleController.java
- API 를 포함하고 있는 컨트롤러 클래스SampleUseCase.java
- UseCase 정보를 담고 있는 인터페이스SampleService.java
- UseCase 를 구현하는 구현체 클래스- root
- apps
- app-api
- src/main/java
- sample/project/kdohyeon
- sample
- SampleController.java // Controller 클래스
- libs
- application
- src/main/java
- sample/project/kdohyeon
- port/in
- sample
- SampleUseCase.java // 유즈케이스 인터페이스
- service
- sample
- SampleService.java // Service 클래스
아래처럼 별다른 설정 없이 SampleController
에서 SampleUseCase
를 사용하려고 하면 모듈이 다르기 때문에 사용을 할 수가 없습니다.
에러 메시지를 확인해보면 SampleUseCase
를 찾을 수 없고, 아래 안내 문구에서는 Add dependency on module...
이라고 나옵니다.
apps:app-api
모듈에 위치한 클래스가 libs:application
에 있는 클래스로 접근을 하려면 의존성을 추가해주어야 합니다.
의존성은 build.gradle
에서 관리합니다.
그런데 build.gradle
은 최상단 root
디렉토리에도 존재하고 또 각 모듈마다 포함되어 있는데 어느 build.gradle
에 추가해야 할까요?
apps:app-api
모듈에 위치한build.gradle
에libs:application
에 대한 의존성을 추가해주면 됩니다.
그 이유는 apps:app-api
모듈에서 libs:application
모듈을 의존할 것이기 떄문입니다.
따라서 apps:app-api
모듈의 build.gradle
에 아래 코드를 추가합니다.
implementation(project(":libs:application"))
코드를 추가하고 gradle sync
를 합니다.
이제는 libs:application
에 위치한 SampleUseCase.java
인터페이스를 호출할 수 있습니다.