2012-06-06 2 views
4

나는 먼저 자신의 저장소와 다음에 공개 저장소 세트 (repo1, repo2, java.net 등)가있는 pom 파일을 가지고 있습니다. 모두가 "릴리스"리포지토리라고 가정 해 봅시다.Maven이 공개 저장소에서 개인 아티팩트를 요청하는 것을 피하는 방법은 무엇입니까?

제 문제는 maven이 처음으로 항아리를 다운로드하거나 내부 버전을 찾는 모든 리포지토리에 요청을 보내거나 버전 관리가 "1.0.0, ". 내가 저장소에만 속하는 foo.bar 그룹 ID 같은 상태로 필터의 일종 적용 할 수있는 방법을

."1.1.0] foo는 "

이 경우는 두 가지 이유로 날 귀찮게 하나입니다 이 요청을 공용 서버로 보내는 것은 대역폭 낭비라고 할 수 있습니다 (서버가 느리면 모든 것이 느려집니다). 그리고 두 번째로 내부 패키지의 이름을 외부 로그 파일에 노출합니다.

로컬 프록시 나 그와 비슷한 것을 배포하고 싶지는 않습니다. 특정 그룹 ID (또는의 목록)가 항상 특정 저장소로 이동하기를 원합니다. 비공개 아티팩트의 경우에도 공용 아티팩트 (repo.maven, download.java)에없는 아티팩트에 대해 특정 아티팩트가 특정 저장소에 있다는 것을 지정하는 데 도움이되므로 이러한 중복 요청을 피할 수 있습니다.

+0

로컬 프록시가 마음에 들지 않는다고 알고 있지만 유용한 로컬 리포지토리 소프트웨어에는 공개 리포지토리의 간단한 로컬 프록시를 제공 할 수있는 기능이 포함되어 있지 않아야합니까? –

+0

내 로컬 리포지토리는 간단한 webdav가 활성화 된 아파치입니다. 나는 그것보다 복잡한 것을 설정하고 싶지 않을 것이다. –

+0

더 자세히 설명 드리겠습니다 : 로컬 저장소는 간단하고 깔끔하고 작음을 의미합니다. 언제든지 정리하고 Jenkins의 관련 아티팩트를 다시 작성할 수 있으므로 로컬 디스크 리소스를 프록시 처리 및 사용하지 않으려 고합니다. . 같은 이유로 모든 저장소에 모든 이슈를 요청하여 HTTP 요청 리소스를 사용하고 싶지 않습니다. 특히 내부 요청은 공개 된 요청에 대해 요청하지 않습니다. –

답변

2

우리는 내부 Nexus 인스턴스를 사용하여 거기에 구성했습니다. Nexus에는 Administration -> Routing 옵션이 있으며 여기에서 groupId에 대한 마스크를 정의하고 사용할 저장소를 지정합니다.

물론 개발자가 사용하는 유일한 저장소가되기 위해 내부 Nexus가 필요하며 외부 저장소가 프록시되거나 미러링되도록 구성해야합니다.

관련 문제