2011-12-28 3 views
4

고유하지 않은 스냅 샷 (Maven 3에서 지원되는 유일한 스냅 샷)을 사용하는 다중 모듈 빌드로 maven-enforcer 규칙이 실패하는 프로젝트가 있습니다.Maven 고유 스냅 샷 및 종속성 컨버전스

예를 들어, 가정 -> 관계 "에 따라"및된다

  1. 모듈 A -> 모듈 B -> 모듈 C
  2. 모듈 A -> 모듈 C

이며 모듈 B와 모듈 C는 고유 한 빌드로 스냅 샷 저장소에 있습니다. POM에 선언 된 모든 모듈 버전은 현재 1.0-SNAPSHOT입니다. 에서

mvn -pl Module-A install

결과 :

[INFO] --- maven-enforcer-plugin:1.0.1:enforce (enforce) @ Module-A --- 
[ERROR] 
Dependency convergence error for com.vivosys.project:Module-C:1.0-SNAPSHOT paths to dependency are: 
+-com.vivosys.project:Module-A:1.0-SNAPSHOT 
    +-com.vivosys.project:Module-B:1.0-20111228.032527-8 
    +-com.vivosys.project:Module-C:1.0-SNAPSHOT 
and 
+-com.vivosys.project:Module-A:1.0-SNAPSHOT 
    +-com.vivosys.project:Module-C:1.0-20111228.032527-6 

이 전이 종속성이 고유하지 않은 스냅 샷 빌드로 해결하지만, 직접 종속성으로 해결

이제 모듈 A를 구축하는 것은 실패 독특한 스냅 샷 빌드.

maven-3.0.3, maven-enforcer 1.0.1을 사용하고 있습니다. 저장소는 고유 한 스냅 샷 옵션을 사용하는 Artifactory 2.4.2입니다 (Artifactory에서 권장하는대로 Maven 3는 비 고유 스냅 샷을 더 이상 지원하지 않기 때문에).

솔루션?

업데이트 : artifactory는 Maven 클라이언트 동작을 재정의하고 고유하지 않은 스냅 샷을 저장소에 저장하는 것처럼 보입니다. 그러나 어떤 이유로 Artifactory는 이것을 권장하지 않습니다 ("Maven 3"참조 http://wiki.jfrog.org/confluence/display/RTF/Local+Repositories 참조). 다른 솔루션도 여전히 환영합니다.

답변

2

this enforcer 플러그인 버그 (개선 사항으로 제기 됨)가 발생했습니다.

아마도 전제 조건으로 전이 의존성 C를 A의 종속성으로 명시 적으로 선언 할 수 있습니까?

+0

버그 신고에 대한 링크를 제공해 주셔서 감사합니다. 두 모듈 B와 C *는 이미 A의 종속물로 명시 적으로 선언되어 있습니다. 실제로 이것은 수렴 실패의 원인입니다. – Raman

1

MENFORCER-118까지 해결할 수있는 유일한 해결책은 고유하지 않은 스냅 샷을 사용하도록 리포지토리 서버를 구성하는 것입니다. Artifactory에서는 다음을 통해이 작업을 수행 할 수 있습니다 : Admin, Repositories, 스냅 샷 저장소를 선택하고 Edit을 선택하십시오. 다음 Maven Snapshot Version Behavior에서 Nonunique을 선택하십시오.