2009-06-12 7 views
4

제 3 자 라이브러리의 스냅 샷 버전을 Google의 로컬 저장소에 배포하려고합니다. 기존 버전의 경우 온라인 저장소에서 더 이상 호스팅되지 않는 이전 버전과 내가 그것을 대체 할 수 없기 때문에, 나는 그것을 국부적으로 호스트해야한다).Maven에서 잘못된 스냅 샷 버전을 사용하려고 시도했습니다.

이제 SNAPSHOT 개념을 잘못 이해했다고 생각합니다. 누군가 나를 똑바로 세울 수 있다면 매우 감사 할 것입니다. 내가 가지고있는 jar 파일의 이름은 foo-0.5.0-20090612.124.jar이며, maven deploy : 파일을 org.bar.foo 버전 0.5.0으로 배포하여 업로드하려고합니다. 내 POM의 버전 종속성은 0.5.0-SNAPSHOT입니다.

로컬 repo에 jar 파일을 업로드 할 때마다 파일 이름의 날짜 다음에 오는 숫자가 반복됩니다 (예 : 125). 그러나 maven install을 실행하면 maven은 이전 번호 (예 : 124)의 항아리를 다운로드하려고 시도합니다.

올바른 스냅 샷 버전을 다운로드 할 수있는 방법이 있습니까? 아니면 제 3 자 SNAPSHOT 파일을 Google 저장소에 업로드해야합니까?

답변

4

사용 사례가 훌륭합니다. 메이븐 (Maven)이 권장하는 최선의 방법은 공유 저장소에 SNAPSHOT 버전의 jar 파일을 업로드하면 SNAPSHOT으로 처리하는 대신 릴리스로 처리해야한다는 것입니다. 당신은 사람들이 에 따라 원하기 때문에

이 말이 그 아티팩트의 특정 버전. 이 아티팩트는 현재 개발 중이 아니며 임의의 시점에서 임의로 변경 될 것으로 예상되지 않으므로 릴리스로 간주해야합니다. 자신 만의 멋진 이름을 붙이는 사람과 다른 사람이 SNAPSHOT으로 생각하는 사람.

종속성 foo-0.5.0-SNAPSHOT을 물으면 Maven이 foo-0.5.0-을 찾지 않는다고 생각합니다. 나는 문자 그대로 저장소에서 foo-0.5.0-SNAPSHOT을 찾는다는 것을 믿는다. 그래서 그것을 발견하지 못했다. (우리는 SNAPSHOTS에 타임 스탬프를 찍지 않으므로 100 % 확신 할 수 없습니다 .SNAPSHOT 항아리는 새로운 버전으로 간단히 덮어 씁니다.)

그래서 foo-0.5.0-20090612.124.jar을 넣으십시오. 제 3 자 저장소 (위의 이유로 릴리스 만 포함해야 함)로 이동하십시오. 그런 다음, 당신의 pom에서 "해제 된"이슈 foo-0.5.0-20090612.124를 명시 적으로 참조하면 모든 것이 잘 동작합니다.

+0

본질적으로 당신이 옳다고 말할 것입니다. 제 3 자 스냅 샷을 제 레포에 추가하는 일이 없습니다. SNAPSHOT 태그를 제거하는 것이 가장 쉬운 방법이었습니다. – mikek

0

잘 모르겠습니다. 0.5-SNAPSHOT 버전의 POM에 연결된 myartifact.jar이라는 이슈가 있어야합니다. 배포 할 때 제대로 스냅 샷 요청을 처리 할 수 ​​있도록

는 저장소 , 타임 스탬프에 -SNAPSHOT을 변경하고이 최신 스냅 샷 버전을 것을 반영하기 위해 저장소 메타 데이터를 업데이트해야합니다.

Archiva 또는 Nexus 또는 FTP/HTTP 서버와 같은 저장소를 사용합니까?

+0

로컬 파일 서버가 아닙니다. 이 레포는 전적으로 내부 용입니다. 그래, 내가하려고하는 것은 꽤 많이있다. 문제는 maven 설치를 실행하면 올바른 타임 스탬프가 아니라 이전의 것을 찾는 것입니다. 타임 스탬프를 결정하는 타사 jar에는 고유 한 것이 있습니까? – mikek