외부망에서 빌드를 성공시킨 뒤 .m2/repository 폴더를 통째로 내부망에 복사했다.
로컬에 라이브러리가 다 있으니 문제없을 거라고 생각했다.
그런데 내부망에서 빌드를 돌리자 외부 저장소(Central)에 접속을 시도하며 Dependency Resolution 에러가 발생했다.
파일은 분명히 있는데, Maven이 계속 외부로 나가려 했다.
1. 원인: _remote.repositories 파일

Maven은 라이브러리를 다운로드할 때 해당 파일이 어떤 원격 저장소에서 왔는지를 기록하는 메타데이터 파일을 함께 생성한다.
파일명은 _remote.repositories 또는 _maven.repositories다.
이 파일에는 출처 저장소 정보가 기록되어 있다. 예를 들어 중앙 저장소에서 받은 파일이라면 central이라고 적혀 있다.
문제는 Maven이 로컬에 파일이 있어도 이 메타데이터를 확인한다는 점이다.
central이라고 기록되어 있으면 Maven은 "현재 연결된 저장소에 업데이트된 버전이 있는지" 확인하려고 시도한다.
내부망은 인터넷이 차단되어 있으니 그 시도가 실패하고, 결국 빌드 전체가 실패로 이어진다.
2. 해결: _remote.repositories 파일 일괄 삭제
로컬 저장소 내의 모든 _remote.repositories 파일을 삭제하면 Maven은 출처를 확인하지 않고 로컬에 있는 파일을 그대로 사용하게 된다.
Windows (PowerShell 기준)
.m2/repository 경로로 이동한 뒤 아래 명령어를 실행한다.
ls -R -Filter "_remote.repositories" | del
Linux / Mac (Terminal 기준)
find . -name "_remote.repositories" -type f -delete
3. 추가 팁: 오프라인 모드 병행
메타데이터 삭제 이후에도 Maven이 외부 연결을 시도한다면 오프라인 옵션을 함께 사용하는 것이 확실하다.
mvn clean install -o
-o 옵션은 원격 저장소 체크를 완전히 건너뛰고 로컬 저장소의 파일만 사용하도록 강제한다.
이전 글에서 다룬 --offline과 동일한 동작이다.
4. 정리
.m2 폴더를 복사하는 것만으로는 충분하지 않다.
Maven은 파일 존재 여부뿐 아니라 출처 메타데이터까지 확인하기 때문이다.
폐쇄망 환경에서 빌드를 안정적으로 돌리려면 _remote.repositories 파일 삭제를 반드시 함께 진행해야 한다.
'Java > Maven' 카테고리의 다른 글
| [Troubleshooting] Spring Boot 2.3 + JEUS 로그 라이브러리 충돌 해결 (0) | 2026.05.05 |
|---|---|
| [Maven] clean / package / --offline / -U 실무 정리 (0) | 2026.05.05 |
| [Maven] mvn clean install (0) | 2022.09.22 |
| Maven repository 설정 (0) | 2022.08.03 |
| Maven에 대해 (1) | 2022.08.03 |