문제

저는 제 3 자 라이브러리의 스냅 샷 버전을 로컬 리포지토에 배치하려고합니다 (유산 이유는 더 이상 온라인 리포에서 호스팅되지 않는 기존 버전입니다. 로컬로 호스팅해야합니다).

이제 스냅 샷 개념을 오해했다고 생각합니다. 누군가 나를 똑바로 세울 수 있다면 매우 감사 할 것입니다. 내가 가진 항아리는 foo-0.5.0-20090612.124.jar로 명명되었으며 Maven 배포를 사용하여 업로드하려고합니다 : 버전 0.5.0에서 org.bar.foo에 파일을 배포합니다. 내 POM의 버전 의존성은 0.5.0-snapshot입니다

jar 파일을 로컬 리포지트에 업로드 할 때마다 파일 이름의 날짜 다음 날짜가 반복되지만 Maven 설치를 실행할 때 Maven은 이전 번호 (예 : 124)와 함께 Jar를 다운로드하려고 시도합니다.

그렇다면 Maven이 올바른 스냅 샷 버전을 다운로드 할 수있는 방법이 있습니까? 아니면 제 3 자 스냅 샷 파일을 REPO에 업로드하지 않아야합니까?

도움이 되었습니까?

해결책

당신이 가진 유스 케이스는 괜찮습니다. Maven 사람들이 권장하는 모범 사례는 JAR의 스냅 샷 버전을 공유 저장소에 업로드하면 스냅 샷으로 처리하고 릴리스로 처리해야한다는 것입니다.

사람들이 의지하기를 원하기 때문에 이것은 의미가 있습니다. 그 유물의 특정 버전. 아티팩트는 적극적으로 발전하지 않으며 어느 시점에서도 임의로 변화 할 것으로 예상되지 않으므로 그 이유로 릴리스로 간주되어야합니다. 당신이 당신의 자신의 개인적인 이름을주는 것만, 다른 사람이 스냅 샷을 고려한 것입니다.

Foo-0.5.0-SnapShot의 종속성을 요청할 때 Maven이 foo-0.5.0-를 찾고 있다고 생각하지 않습니다. 나는 그것이 문자 그대로 리포지토리에서 foo-0.5.0-snapshot을 찾고 있다고 생각합니다. 그래서 당신은 그것을 찾지 못하는 이유입니다. (우리는 스냅 샷을 타임 스탬프하지 않기 때문에 이것에 대해 100% 확실하지 않습니다. 우리는 단순히 지속적으로 -snapshot jars를 최신 버전으로 만들어냅니다.)

따라서 Foo-0.5.0-20090612.124.jar를 제 3 자 저장소에 넣으십시오 (위의 이유에 대해서만 릴리스를 포함해야 함). 그런 다음 POM에서 "릴리스"아티팩트 FOO-0.5.0-20090612.124를 명시 적으로 참조하면 모든 것이 잘 작동해야합니다.

다른 팁

내가 팔로우하는지 잘 모르겠습니다. myartifact.jar a POM 버전으로 0.5-SNAPSHOT.

배포 할 때 저장소 ~해야 한다 변경 -SNAPSHOT 타임 스탬프로 리포지토리 메타 데이터를 업데이트하여 가장 최신 스냅 샷 버전이므로 스냅 샷 요청을 올바르게 사용할 수 있습니다.

다음과 같은 저장소를 사용하십니까? Archiva 또는 연결점 아니면 FTP/HTTP 서버입니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top