build.gradle에서 complie과 implementation

citron03·2021년 12월 6일
0

스프링부트

목록 보기
2/2

스프링 프로젝트에서 라이브러리를 추가하기 위해서 build.gradle파일의 dependencies에 compile을 많이 사용했었다.
하지만, compile을 사용하는 것은 Gradle 3.4부터 권장되지 않는다.

발간 후 몇년이 자난 책을 보면 build.gradle 파일 내에 compile 설정이 잔뜩 쓰져진 것을 알 수 있다.

하지만, 최신 버전의 gradle은 compile을 사용할 수 없다.

  • 예시로 mariaDB의 라이브러리를 추가해보자.

compile group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '2.7.3'

  • 아마 여러분의 gradle 버전이 6보다 높다면, 빨간 줄이 그어져 있을 것이다!

implementation group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '2.7.3'

  • 더이상 빨간 줄은 없다. 라이브러리를 무사히 추가한다.

그 외에도 compile 대신에 사용할 수 있는 api가 있다.

  • implementation는 Java Plugin을 적용하는 모든 프로젝트에서 사용할 수 있고 api는 Java Library Plugin을 구체적으로 적용하는 프로젝트에서만 사용할 수 있습니다.
  • 대부분의 경우에 사용하는 것은 implementation 이다.
  • implementation은 소비자의 컴파일 클래스 경로에서 종속성을 유지합니다.
    또한 구현 유형이 실수로 공개 API로 누출되는 경우 소비자는 즉시 컴파일에 실패합니다.
  • 따라서 implementation은 보안에 더 우수하고 이 때문에 compile 대신에 사용된다.

api가 사용될 때는 다음과 같다.

  • super classes나 interfaces가 사용될 때
  • public fields나 public annotation을 사용할 때

https://docs.gradle.org/6.8.1/userguide/userguide.html 공식 문서를 확인하여 이 글을 작성했다.
복잡한 내용이지만, 잘못 사용하면 보안상의 문제가 발생할 수 있으니 중요하다.

profile
🙌🙌🙌🙌

0개의 댓글