단순 주입말고 gradle도 내가 설정할 수 있는지?(Gradle Scope)

Better late than never·2022년 9월 5일
0

?

gradle, build 도구 사용 시 무지성으로 implements 또는 compile만 하여서 version이랑 lib랑 신경 쓰면서 개발을 하였는데 개발할 때는 잘되었으나 배포해보니 build Scope때문에 에러가 나 확인해보니 gradle scope에 대한 문제 였다. maven에서 필요한 오픈소스들만 주입해서 사용하기만 했는데 상세하게 어느정도 scope를 상세하게 설계할 수 있는 지 궁금해서 분석

Gradle설정 옵션 정리

  • compile(gradle 3.0이상 지원x -> implementation) : 프로젝트를 컴파일할 때 필요한 의존 라이브러리들
  • runtime : 프로젝트를 실행할 때 필요한 의존 라이브러리들. 기본적으로 compile을 모두 포함한다.
  • provided : compile 과 매우 유사히지만, 실행시 의존관계를 제공하는 JDK나 컨테이너에 대해서 적용됨. 예를 들어, JEE에 대한 웹 어플리케이션을 만드는 경우, 웹 컨테이너가 서블릿 API와 Java EE API관련 클래스들을 제공하기 때문에 provided 영역으로 의존관계가 세팅되어야 함. 이 영역은 컴파일과 테스트의 클래스패스 용으로 사용되며, 자동영역임.
  • test : 일반적인 어플리케이션 사용에 대해서는 의존관계가 필요없고, 테스트 컴파일과 실행 시점에만 사용됨.
  • system : 명시적으로 해당 JAR를 포함하는 것이 제공되어야 한다는 것을 제외하고 provided와 유사함. artifact는 항상 사용가능하며 레파지토리에서 검색하지 않음.
  • import (Maven 2.0.9 이후에서만 적용) : 이 영역은 에서 pom의 의존관계에 대해서 사용됨. 지정된 POM이 해당 POM의 영역에 있는 의존관계로 대체됨을 의미함. 이것들이 대체되기 때문에 import 영역의 의존관계들은 실질적으로 의존에 대한 제약에 대해 관여하지 않음.
  • providedCompile : compile시에는 필요하지만, 배포시에는 제외될 dependency를 설정한다. (war

plugin이 설정된 경우에만 사용 가능하다)

  • providedRuntime : runtime시에만 필요하고, 실행환경에서 제공되는 dependency를 설정한다. (war plugin이 설정된 경우에만 사용 가능하다)

0개의 댓글