Gradle의 dependancy 경로는 왜 프로젝트에 포함되지 않나?
Gradle의 dependancy 경로는 왜 프로젝트에 포함되지 않나?
1. Gradle이 뭐지?
- Gradle은 Groovy 언어를 기반으로 한 오픈소스 빌드 도구
- 안드로이드 스튜디오 공식 빌드 도구이기도 함
2. 이 글을 쓰는 이유
회사에서 진행하는 프로젝트에서 F/E 담당자에게 테스트할 샘플 B/E 서버를 만들어서 줘야 할 상황 Gradle, Spring Boot 프로젝트 샘플이 있었는데, 제대로 작동되는지 확인을 하고 zip으로 넘겨줄 계획
- 프로젝트 생성하고 실행하는데 문제점 2가지 발생
- 프로젝트 생성시 Gradle 불러오지 못함(인터넷망에서 다운받아오는 방식)
- 인터넷이 되는 PC에서 해당 Gradle 버전의 zip파일을 다운
- 망분리 환경으로 가져와 수동 설치
- 프로젝트 생성할때 local 에 설치된 Gradle path 지정해서 프로젝트 생성
- 정상적으로 프로젝트를 생성하고 파일을 보니 빨간색 오류들 발생
Gradle 동작 실패, 프로젝트에 필요한 의존성들을 가져올 수 없었음
(이 또한 build.gradle에 정의된 Dependancy들을 인터넷망에서 다운받아오는 형식)- 인터넷망에서 같은 버전의 Gradle 환경 프로젝트 생성 후 같은
build.gradle스크립트 생성 후 빌드 C:\Users\사용자명\.gradle\caches에 의존성들이 추가됨- caches 폴더 전체를 망분리 환경으로 가져와 같은 경로에 덮어쓰기
- 인터넷망에서 같은 버전의 Gradle 환경 프로젝트 생성 후 같은
- 프로젝트 생성시 Gradle 불러오지 못함(인터넷망에서 다운받아오는 방식)
빨간줄도 없어졌겠다, 서버 실행도 잘 된다, 이제 프로젝트를 zip파일로 묶어서 보내기만 하면 되는데…
Gradle 따로, 프로젝트 경로 따로, caches 폴더의 의존성 설치한 것들 따로, 총 3개의 zip 파일들로 제공해야 하고, 각각 어디에 위치해야하는지 설명해야 하는 번거로움이 생김
하나의 zip 파일로 줘서 압축 풀고 실행하면 편할텐데 생각했다.
3. 왜 의존성들은 프로젝트 폴더 내에 없지?
구글에서 서치한 결과 한 블로그에서 그 이유를 찾을 수 있었다.
- 다른 프로젝트에서 동일한 의존성을 추가시 또 받는건 비효율적이기 때문
- 따라서 특정 경로에 의존성들을 다운받고, 버전이 동일하면 다시 다운로드를 하지 않는다.
의존성의 다운로드 경로는C:\Users\사용자명\.gradle\caches\modules-2\files-2.1
4. 그럼 해결방법은 뭐가 있을까?
일단 대충 생각만 해보자면
- caches 폴더 경로를 지정할 수 있는 설정을 찾아서 바꾸기(프로젝트 폴더 안으로)
- caches 폴더 안에 있는 .jar 파일들을 프로젝트 안에 위치시키기
대충 이러면 될 거 같은데…
다음에 하장
참고자료
https://kkambi.tistory.com/122
https://brunch.co.kr/@yudong/73
https://sshkim.tistory.com/170
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.