포스트

Gradle의 dependancy 경로는 왜 프로젝트에 포함되지 않나?

Gradle의 dependancy 경로는 왜 프로젝트에 포함되지 않나?

Gradle dependancy 경로

1. Gradle이 뭐지?

  • Gradle은 Groovy 언어를 기반으로 한 오픈소스 빌드 도구
  • 안드로이드 스튜디오 공식 빌드 도구이기도 함

2. 이 글을 쓰는 이유

회사에서 진행하는 프로젝트에서 F/E 담당자에게 테스트할 샘플 B/E 서버를 만들어서 줘야 할 상황 Gradle, Spring Boot 프로젝트 샘플이 있었는데, 제대로 작동되는지 확인을 하고 zip으로 넘겨줄 계획

  • 프로젝트 생성하고 실행하는데 문제점 2가지 발생
    • 프로젝트 생성시 Gradle 불러오지 못함(인터넷망에서 다운받아오는 방식)
      1. 인터넷이 되는 PC에서 해당 Gradle 버전의 zip파일을 다운
      2. 망분리 환경으로 가져와 수동 설치
      3. 프로젝트 생성할때 local 에 설치된 Gradle path 지정해서 프로젝트 생성
    • 정상적으로 프로젝트를 생성하고 파일을 보니 빨간색 오류들 발생
      Gradle 동작 실패, 프로젝트에 필요한 의존성들을 가져올 수 없었음
      (이 또한 build.gradle에 정의된 Dependancy들을 인터넷망에서 다운받아오는 형식)
      1. 인터넷망에서 같은 버전의 Gradle 환경 프로젝트 생성 후 같은 build.gradle 스크립트 생성 후 빌드
      2. C:\Users\사용자명\.gradle\caches 에 의존성들이 추가됨
      3. caches 폴더 전체를 망분리 환경으로 가져와 같은 경로에 덮어쓰기

빨간줄도 없어졌겠다, 서버 실행도 잘 된다, 이제 프로젝트를 zip파일로 묶어서 보내기만 하면 되는데…

Gradle 따로, 프로젝트 경로 따로, caches 폴더의 의존성 설치한 것들 따로, 총 3개의 zip 파일들로 제공해야 하고, 각각 어디에 위치해야하는지 설명해야 하는 번거로움이 생김
하나의 zip 파일로 줘서 압축 풀고 실행하면 편할텐데 생각했다.


3. 왜 의존성들은 프로젝트 폴더 내에 없지?

구글에서 서치한 결과 한 블로그에서 그 이유를 찾을 수 있었다.

  • 다른 프로젝트에서 동일한 의존성을 추가시 또 받는건 비효율적이기 때문
  • 따라서 특정 경로에 의존성들을 다운받고, 버전이 동일하면 다시 다운로드를 하지 않는다.
    의존성의 다운로드 경로는 C:\Users\사용자명\.gradle\caches\modules-2\files-2.1

4. 그럼 해결방법은 뭐가 있을까?

일단 대충 생각만 해보자면

  1. caches 폴더 경로를 지정할 수 있는 설정을 찾아서 바꾸기(프로젝트 폴더 안으로)
  2. caches 폴더 안에 있는 .jar 파일들을 프로젝트 안에 위치시키기

대충 이러면 될 거 같은데…
다음에 하장


참고자료
https://kkambi.tistory.com/122
https://brunch.co.kr/@yudong/73
https://sshkim.tistory.com/170

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.