2017-12-20 40 views
0

제한된 인터넷 자원으로 인해 오프라인으로 개발 중이며 몇 달에 한 번씩 외부 저장소 전체를 실행하려고합니다 (예 : repo1.maven.org/maven2 - 디스크 공간에는 문제가 없음).오프라인 사용을위한 maven2 저장소 다운로드

오늘 나는 우리가 사용하고있는 많은 공통적 인 의존성을 포함하고있는 간단한 POM을 사용하고 있는데, 로컬 Nexus 저장소를 통해 프록시를 사용하여 로컬로 캐시하는 미러를 사용하도록 로컬 maven을 설정했습니다. 오프라인 사용을 위해 잡는 것 -하지만 그다지 효과적이지는 않습니다.

나는 이제 내 로컬 넥서스 설치에 모든 스크립트를 가져올 스크립트를 작성할 수 있도록 메이븐 리포지토리에 대한 검색을 실행할 수있는 명령 줄 도구를 찾고 있는데 어떤 것이 있거나 있다면 듣고 싶습니다. 그것을 성취 할 수있는 다른 방법이 있습니다.

감사

일반적으로
+0

중앙에있는 거울처럼. [넥서스] (https://www.sonatype.com/download-oss-sonatype)를 사용할 수 있습니다. – ares

답변

0

라는 메이븐 의존성 플러그인의 목적이있다 "go-offline는" 는 그래서 모든 프로젝트 종속성을 잡기 위해 그들 지역 .m2의 repo에 저장할 수 있습니다.

자세한 내용은 here을 참조하십시오.

Maven을 실행하고 네트워크에 존재하지 않는 것처럼 동작하도록 지정하려면 "-o"옵션 (오프라인 모드)으로 실행할 수 있습니다. 따라서 의존성이 로컬에 설치되어 있지 않다면 Maven은 네트워크에 연결하려고 시도하지 않고 빌드를 실패하게됩니다.

반대의 경우 Maven이 새로운 버전을 확인하고 가져 오도록하려면 (그렇지 않으면 이미 repo에 있어야 함) "-U"옵션을 사용할 수 있습니다.

일반적인 검색 및 다운로드 사용 사례에 대한 요지는 잘 모르겠습니다. 일반적으로 네트워크에 Nexus 또는 Artifactory를 한 번만 설치하면 각 종속성이 한 번만 다운로드됩니다. 지역 개발 기계에서 사람들은 대개 파일 시스템으로 작업하고 이와 같은 도구를 유지하지 않습니다.

이제 전체 저장소를 인터넷 (다른 네트워크 또는 다른 곳으로 복사하기 위해)에서 복사하려면 Apache Nutch for example과 같은 크롤러를 사용하거나 모든 파일을 반복적으로 다운로드하는 자체 스크립트를 만들면됩니다.

+0

오프라인으로 (설정으로) 이동하는 것이 모든 목적에 부합하지 않습니다. 유스 케이스는 간단합니다. 우리는 인터넷 연결을 한 번하고 있습니다. 그 기간 동안 가능한 한 jar (의존성)만큼 움 직이고 싶습니다. - 의존성은 프로젝트의 POM이 아니지만 우리가 필요로하는 일반적인 것들입니다. 미래 - 우리는 인터넷이 없기 때문에 특정 프로젝트를 기반으로하지 않고 모든 프로젝트를 가져오고 싶습니다. –

+1

이제 알았습니다. 일단 인터넷 접속없이 개발을위한 네트워크가 완전히 다른 환경에서 일 해왔다. 그래서 우리는 넥서스 저장소 전체를 다운로드해야했습니다. 그런 다음 우리는 Maven 저장소를 크롤링하고 모든 것을 다운로드 한 스크립트를 작성했습니다. Repo1은 http api를 노출하므로 쉽습니다. http://repo1.maven.org/maven2/ –

0

아니 전체 (아직) 솔루션하지만 난 repo1.maven.org/maven2의 전체 내용을 잡아 httrack를 사용하고는 - 즉,없는 것보다는 이미 더 :

당신은 당신의 자신의 네트워크에서 개인 저장소를 설정하고이를 구성 할 수 있습니다