2009-08-13 4 views
5

내가하고 싶은 일은 Maven이 로컬 리포지토리에있는 각 아티팩트에 대해 'maven-metadata.xml'을 다운로드하도록하는 것입니다.Maven이 중앙 저장소에서 maven-metadata.xml을 강제로 다운로드하게하는 방법은 무엇입니까?

기본 Maven 동작은 원격 저장소에서 메타 데이터 만 다운로드하는 것입니다 (this question 참조).

은 현재 내가 빌드 머신에서 실행하는 원격 저장소를 가지고 :

내가 그렇게 할 이유

. 원격 저장소 란 Maven 프로젝트를 빌드하는 데 필요한 모든 종속성을 포함하는 빌드 시스템에있는 디렉토리를 의미합니다. Nexus와 같은 저장소 관리자는 사용하지 않고 있으며 저장소는 빌드 컴퓨터에 업로드 한 로컬 저장소의 복사본입니다.

그러나 로컬 저장소에 'maven-metadata.xml'파일이 없으므로이 메타 데이터 파일도 빌드 시스템 저장소에 없습니다. 중앙 저장소에서 메타 데이터 파일을 검색 할 수 있다면 작업중인 원격 저장소를 빌드 시스템에 업로드 할 수 있습니다.

+0

와 저장소 오프라인을 가지고, 또는 왜 당신은이 작업을 수행해야합니다. 당신이 달성하고자하는 것을 설명해 주시겠습니까? 지역으로 –

답변

8

공용 저장소에서 메타 데이터를 가져 오지 않으려는 경우 주어진 아티팩트에서 사용 가능한 모든 버전이 포함되지만 저장소에는 일부 릴리스의 하위 집합이 포함됩니다.

저장소 관리자를 사용하는 것이 더 나을 것이라고 생각해도 좋습니다. 다음 단계를 통해 이슈 메타 데이터를 한 번 생성 할 수 있습니다. 그러나 필요가 바뀌면 프로세스를 반복하거나 수동으로 파일을 업데이트해야합니다. 관리자를 사용하지 않는 이유는 무엇입니까? Nexus는 독립형으로 실행할 수 있으며 설치 공간이 매우 작습니다. 당신이 저장소 관리자에 대한 넥서스를 사용하여 계획하지 않더라도


, 당신은 여전히 ​​당신의 메타 데이터를 생성하는 데 사용할 수 있습니다.

  1. 첫 번째 install Nexus.
  2. 는.
  3. 는 넥서스 일/릴리스 하위 디렉토리로 로컬 저장소의 내용을 복사합니다. 기본 $ {user.home의}/sonatype-일에 의해 (
  4. Start Nexus을 넥서스 작업 디렉토리를 찾아 넥서스에 연결 (기본 http://localhost:8081/nexus에 의해) 브라우저의 홈 페이지 관리자 계정을 (암호 admin123과) 왼쪽의 저장소 링크를
  5. 클릭 사용에
  6. 로그인합니다.
  7. 는 모든 이슈에 대해 생성 된 메타 데이터를해야 몇 분에서 메타 데이터

재 구축 자료 저장소를 마우스 오른쪽 단추로 클릭을 선택하고 을 클릭합니다. 그런 다음 필요에 따라 복사하여 Nexus를 제거 할 수 있습니다. 내가 찾은

+1

나는 그가 빌드와 로컬 머신에 대해 repos를 공유해야한다고 동의한다. 그가 동기화 솔루션은 나를 위해 일한 – sal

+1

에있는 메타 데이터의 두 복사본을 유지하는 것입니다 방법은 없습니다. 또한, 충고 덕분에, 덕분에,하지만 내가 정말로 필요한 문제 해결 방법입니다, 비록 그것이 이상적인 해결책은 아니지만 ... –

4

기본값 리포지토리는 모두 super pom.xml에 정의되어 있으며 모든 폼은 기본적으로 상속됩니다.

로컬에서는 ~/.m2/repos/* 만 사용하려는 경우 오프라인 모드로 작업하십시오. 에 <offline>true</offline> 추가하여 settings.xml

있는 경우는 현지 무슨 뜻 당신의 로컬 서버,이 같은 "거울"의 넥서스를 사용하도록 설정 파일을 수정, 넥서스와 같은 저장소 관리자를 설치할 수 :

<mirror> 
    <id>central-proxy</id> 
    <mirrorOf>central</mirrorOf> 
    <url>my/local/nexus/server</url> 
</mirror> 

Nexus에서 원치 않는 원격 저장소를 사용 중지합니다.

+0

I 의미 ~/.m2 /의 repos/* 사용 태그 또는 -o 플래그 중 하나가 메이븐 내가 원하는 '받는다는-metada.xml'파일을 다운로드하지 않습니다하지만 경우. –

+0

난 당신이 다른 빌드하고 원격 컴퓨터에 대한 repos 배포해야 할 것 같아요. 빌드 머신이 빌드를 위해 로컬 메이븐 레포를 사용하고 배포를 위해 디스크상의 다른 장소를 사용하게하십시오. 일부 서버를 사용하여 두 번째 저장소를 볼 수있게하십시오. 또한 3 차 저장소에 로컬 빌드를 배포해야합니다. 메타 데이터는 그 상황에서 스스로를 분류 할 것입니다. – sal

+0

무엇 & 왜''? 위의 설명은 나를 돕고있다. – hari

1

것은 누군가가 jarvana의 초기 검색을 수행하고 있으며 발생하는 메타 데이터 오류 메시지를 일으키는 원인이되는 치어 이내에 배치했다. 이 ...

<!-- <repository> 
     <id>jarvana</id> 
     <url>http://www.jarvana.com/jarvana/browse/</url> 
    </repository> --> 

.. 고정되어있어 오류가 사라졌습니다.

0

저장소 관리자는 훌륭하지만 설치하려는 내 노트북에서 실행되지 않습니다. 자원을 절약하고 싶습니다. 그래서, 내 솔루션은 다음과 같습니다 :

  1. artifactory (https://www.jfrog.com/artifactory)
  2. 실행이 서버를 통해 구체화로 저장소를 설치 (로컬 호스트 : 8081)
  3. 실행이 (center.maven.org)
  4. 원격 서버를 통해 실현 artifactory
  5. 합병
  6. 다운로드 캐시 콘텐츠를 폴더로 : ~/.m2/저장소에서 4 단계 및 폴더에서 폴더를 다운로드합니다.

지금 나는 당신이 뜻을 정확하게 명확하지 않다 전체 콘텐츠 (바이너리, 소스, XML, MD5, SHA1)