본문 바로가기

[JAVA] 이클립스에서 Gradle 모듈 구현으로 프로젝트간 의존성 추가하기

다프트 코더 2024. 12. 7.
반응형

Maven 프로젝트는 서로 다른 프로젝트간에 의존성을 추가하려면 pom.xml에 추가만 해주면 간단하게 의존성을 추가할 수 있었다. 하지만 Gradle 프로젝트는 프로젝트간 의존성 주입하는 방법이 Maven 프로젝트처럼 간단하지 않았다. 그래서 Gradle 환경에서 프로젝트간 의존성을 추가하는 방법을 기록하려고 한다.

현재 3개의 Gradle 프로젝트가 생성되어있다. 그리고 최종적으로 module-a 프로젝트에 module-b, module-c 의존성을 추가하기위한 과정을 차례대로 정리해보았다.

반응형

1. 빈 프로젝트 생성하기

최상위 Gradle 프로젝트를 생성한다. 이 프로젝트는 내용이 없는 껍데기 프로젝트이며 해당 프로젝트에 포함된 하위 모듈 프로젝트들에 대한 의존성 및 Gradle 설정을 하는 용도로 사용될 프로젝트다. 필자는 module이라는 프로젝트를 생성했다.

2. 실제 프로젝트 경로 변경하기

실제 기능이 구현되어있는 module-a, b, c 프로젝트의 경로를 새로 추가한 빈 프로젝트 하위 폴더로 변경한다.

3. 최상위 프로젝트 setting.gradle 수정

최상위 프로젝트의 settings.gradle 정보에 하위 프로젝트를 include 해준다. 만약 해당 파일이 없다면 새로 생성해서 작성해도 상관없다.

//부모 프로젝트 setting.gradle 파일
rootProject.name = "module"
include("module-a")
include("module-b")
include("module-c")

이렇게 하면 module 프로젝트안에 module-a, b, c 프로젝트가 자식 프로젝트로 들어가게 된다.

4. 자식 프로젝트 setting.gradle 삭제

실제 프로젝트에 있는 settings.gradle 파일을 전부 삭제해준다. settings.gradle 정보는 이제 최상위 부모 프로젝트에서 관리를 해야 한다.

이제 Gradle Tasks 탭에서 부모 및 자식 구조로 잘 보여지는걸 확인할 수 있다.

5. 부모 프로젝트 bulid.gradle 수정

부모 프로젝트 build.gradle에 의존성을 추가한다. 참고로 부모 프로젝트에 의존성을 추가하면 자식 프로젝트도 동일하게 의존성이 부여된다. 그리고 자식 프로젝트간 의존성도 부모 프로젝트 bulid.gradle에서 추가할 수 있다. module-a 프로젝트에 module-b, module-c 프로젝트 의존성을 추가했다. 

//부모 프로젝트 build.gradle
subprojects {
	apply plugin: 'java'
    apply plugin: 'java-library'
    dependencies {
    }
}

project(':module-a') {
	dependencies {
		implementation project(':module-b')
		implementation project(':module-c')
	}
}

이제 module-a에서 module-b, module-c에 공개된 클래스랑 함수들을 사용할 수 있게 된다.

6. 의존성 주입 여부 확인

module-a 프로젝트에서 module-b, module-c 프로젝트에 구현한 Module2Utils, Module3Utils를 정상적으로 호출하는걸 확인 할 수 있다.

module-b 프로젝트에서는 module-c 프로젝트에 구현한 Module3Utils를 사용하려고 하면 에러가 발생하는걸 확인 할 수 있다. 

이클립스로 그래들 프로젝트를 멀티모듈로 구현하는 방법을 살펴보았다. 프로젝트를 멀티모듈로 구현하면 많이 이점들이 있기 때문에 이런 방식으로 프로젝트를 생성해서 사용하는걸 추천한다.

반응형

댓글