상황
종종 오프라인 환경(==망분리, 폐쇄망, 내부망, 인트라넷)에서 gradle 프로젝트를 빌드해야 하는 경우가 있다.
하지만 Dependency를 받아오지 못하여 빌드에 실패하면 어떻게 처리할 수 있을까?
이런 환경에서 프로젝트를 빌드하는 방법에 대해 작성해보겠다.
👀 내 로컬에는 이전에 온라인 환경에서 빌드할 때 로컬에 이미 생성된 cache가 있어서 오프라인 환경에서의 빌드가
전혀 문제가 되지 않았다. 하지만 함께 업무에 참여한 동료의 로컬에서는 빌드 시 문제가 생겼고, 추후에 나에게도 발생할 수 있는 이슈여서 정리해보려고 한다.
Dependency를 가져오는 과정
1. 온라인 환경에서는 gradle.build나 pom.xml에 넣은 Dependency들은 원격 저장소(MavenCentral, Jcenter, google, ...etc) 에서 받아 온다.
2. 이렇게 받아온 Dependency들은 로컬 PC에 아래의 경로에 저장되어 관리된다.(Gradle : ~/.gradle 폴더, Maven : ~/.m2 폴더)
👉Maven 경로 Windows OS 기준 : ${user.home}/.m2/repository (C:\Users{유저디렉토리}.m2\repository)
3. 로컬 저장소에서 찾고 없으면 원격 저장소에서 다운 받는다.
해결방법
이 문제를 해결하는 데에는 여러가지 방법이 있지만 여기서는 두가지만 정리해보겠다.
✔️1. 인트라넷에 maven repository 구축
사내 인트라넷에 자체적으로 서버를 구축하는 방법이다.
대표적인 예로는 nexus 가 대표적이다.
하지만 내 경우에는 고객사 측 인프라팀에 위 사항을 요청할 수 없었기에, 2번 방법을 선택했다.
✔️2. local에 repository 추가하기
온라인 환경에서 받아온 local repository를 폐쇄망에 가져와서 빌드시에 이용하는 방법이다.
다행히 내 로컬에 이미 m2 폴더 하위의 repository 폴더가 있었기 때문에 동료에게 파일을 전달했고,
C:\Users{유저디렉토리}.m2\repository 위치에 copy & paste해서 문제를 해결했다.
➕더 알아보기
❓왜 Gradle을 사용하는데 Maven repository를 이용하는 걸까
build.gradle 파일 일부 발췌
...생략
repositories {
mavenLocal()
mavenCentral() // 이게 뭘까??
}
...생략
이번 게시글을 포스팅하면서 궁금한 부분이 생겼다.
이 프로젝트는 빌드 도구로 Gradle을 사용하고 있는데 왜 Maven repository를 이용하는 것인지 의문이었다.
그래서 build.gradle과 공식문서를 찬찬히 살펴보았다.
출처 : https://docs.gradle.org/7.6.1/userguide/declaring_repositories.html#sec:declaring_public_repository
공식문서에서 Gradle은 Maven Central과 Google Android 이러한 repository를 사용할 수 있다고 나와있다.
즉, 위 코드에서 mavenCental() 은 Maven Central 저장소를 사용하여 의존성 다운로드를 하겠다는 명시인 것이다.
내가 혼동하여 알고 있었기에 "음? Gradle을 빌드도구로 쓰면서 웬 Maven ???" 이라는 의문을 갖게된 것이다.
정리하자면 Maven과 Gradle은 빌드 관리 도구이고, Maven Central은 Java 프로젝트에서 사용할 수 있는 오픈 소스 라이브러리를 호스팅하는 인기 있는 저장소이다.
'Back > Spring Boot' 카테고리의 다른 글
컨트롤러에서 Enum 타입 @RequestParam @PathVariable로 매핑하기 (2) | 2024.04.15 |
---|---|
@RequestBody DTO json데이터가 null일 때 (3) | 2024.02.07 |
[SpringBoot, Tomcat] Tomcat JNDI DB 정보 암호화 (0) | 2023.10.24 |
[SpringBoot] 외장 tomcat에 JNDI 설정 (+war) (1) | 2023.10.23 |
[SpringBoot] war로 배포하기, 외장 톰캣 구동 (+Trouble Shooting) (1) | 2023.10.11 |
댓글