본문 바로가기
도구/gradle

[gradle] plugin, java-library

by 가판이 2025. 2. 2.

스프링부트를 다루다보니 gradle build script 에 다음과 같은 내용이 있었습니다:

plugins {
    `java-library`
}

그냥 gradle init 을 통해 프로젝트 구조를 생성했을 때 들어있어서 그냥 저냥 쓰다가, 문득 궁금해져서 알아보았습니다.

 

java-library gradle plugin 은 Java library project 를 위한 plugin 으로써, 이 Plugin 을 사용하면 API 와 구현체를 분리하여 Module화된 Project 를 만들 수 있습니다.

 

즉, 쉽게 설명하자면 현재 Root Project 에 A, B, C 라는 Module 이 3개가 있다고 가정합니다.

 

의존성 주입 관계가 A -> B -> C 라고 한다면, C에서 B를 통해 A에 접근해서 A의 기능을 사용할 수 있게 된다라는 뜻입니다.

 

B Project 의 build.gradle.kts 에는 다음과 같이 적용되어 있고:

plugins {
    `java-library`
}

dependencies {
    api(project(":A"))
}

 

C Project 의 build.gradle.kts 에는 다음과 같이:

dependencies {
    implementation(project(":B"))
}

이면, C project 특정 class 에서 A project 의 class 에 접근이 가능하다는 뜻입니다.

 

만일 B project build.gradle.kts 에 A 의존성을 api 가 아닌 implementation 으로 변경하게되면, C project 에서 A project 에 접근이 불가능합니다.

 

반응형