728x90
Gradle 프로젝트 의존관계를 추가해줄때 implementation으로도 추가가 가능하고 compile로도 추가가 가능합니다. 자꾸 혼용해서 쓰다보니 무슨 차이점이 있는지 궁금해서 찾아보게 되었습니다.
한 줄 요약
implementation > compile
compile은 왜 사라졌는가?
최신 버전 Gradle 공식 문서에서는 compile 옵션에 대해서 언급조차 하지 않습니다. 과거 문서를 찾아본 결과를 토대로 설명드리겠습니다. A <-B <- C 로 의존 관계가 형성되었다고 생각해볼게요. 만약에 A를 수정한다고 하면 A를 직접적으로 의존중인 B에만 영향을 끼쳐야 합니다. 그러나 compile의 경우 C까지 수정해야되는 문제점이 발생합니다. 이러한 문제점때문에 implementation을 권장하다가 아예 7.0 버전에서는 해당 옵션을 없앴습니다.
compile configuration이 Java 라이브러리 프로젝트의 공용 API에 영향을 미치는 종속성과 그렇지 않은 종속성을 구분하지 않기 때문에 권장하지 않았나보네요.
스택 오버 플로우에 잘 정리된 질문이 있어서 링크 걸어두겠습니다.
참고
docs.gradle.org/current/userguide/java_plugin.html
728x90
'web > spring&spring boot' 카테고리의 다른 글
[spring boot] 회원가입 기능 구현하기(2) - SecurityConfig 작성 (0) | 2021.04.23 |
---|---|
[spring boot] spring security를 이용한 회원가입 기능 구현 (0) | 2021.04.22 |
[spring boot] 스프링 부트 h2 데이터베이스 영구 저장 (0) | 2021.04.01 |
[스프링부트] 게시판 - 게시글 등록 구현하기(1) (0) | 2021.03.28 |
[spring boot] @SpringBootApplication 정리 (0) | 2021.03.24 |