앞서 생성한 여러 모듈을 함께 사용해보도록 하겠습니다.
(언어는 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 인터페이스를 호출할 수 있습니다.
