본문 바로가기
왜?

[왜] gradle은 다운로드한 의존성 파일(jar)을 해당 프로젝트에 보관하지 않을까?

by KKambi 2020. 4. 25.

문제상황

jquery webJar를 의존성으로 추가하고, 해당 라이브러리의 폴더 구조가 어떻게 되있는지 알고 싶었다.

그런데 로컬에서 프로젝트 디렉토리를 탐색하면, 라이브러리(jar파일) 폴더는 보이지 않았다.

 

gradle을 통해 의존성을 추가하고 빌드하면, 해당 프로젝트에서 라이브러리를 사용할 수 있음에도 불구하고!

 

대체 왜 그럴까?

 

 

이유

바로 로컬 캐시 때문이다.

  • 다른 프로젝트에서 동일한 의존성을 추가하고 빌드 시, 해당 라이브러리를 저장소에서 또 다운로드 받는 건 비효율적이다.
  • 따라서 특정 경로에 의존성들을 다운로드 받아놓고, 버전이 같은 경우 다시 다운로드하지 않는다.
  • 해쉬값으로 디렉토리 이름이 저장된다. 해당 라이브러리의 오염을 체크하는 것?! (정확하진 않음)

 

의존성 다운로드 경로는 <user home>/.gradle/caches/modules-2/files-2.1/ 에 저장된다.

 

(윈도우 기준)

<user home>은 cmd에서 echo %USERPROFILE% 명령을 입력하면 나오는 유저 홈 경로이다.

 

 

추가학습

  1. 저장소의 경로는 다음과 같다.
  2. gradle wrapper의 버전은 gradle/wrapper/gradle-wrapper.properties에서 관리한다.
  3. gradle wrapper는 프로젝트에 wrapper를 함께 배포
    • 누구든지 gradle을 설치하지 않고 프로젝트 이용 가능
    • 빌드를 하는 유저들은 동일한 버전의 gradle 사용을 보장받음

 

참고자료

https://okky.kr/article/441960

https://brunch.co.kr/@yudong/73

https://sshkim.tistory.com/170

댓글