2011-12-08 1 views
2

중간 규모의 복잡한 소프트웨어 프로젝트의 경우 복잡한 종속성 체인으로 신속하게 끝날 수 있습니다. 각 프로젝트가 발전함에 따라 고정 의존성이 지속적인 통합을 방지Maven : SNAPSHOT을 사용하여 버전 범위에 대해 개발하지만 고정 버전에 대해 출시합니다.

A --> B --> C 
    `--------^ 

A와 B 모두 C.에 따라 다릅니다

는 다음 종속성 트리를 생각해 보자. (예를 들어, C가 A, B의 의존성에 의해 필요로되는 수정으로 업데이트되는 경우) semantic 버전 관리를 사용하면 모듈을 지속적으로 조정할 필요없이 버전 범위에 맞게 모듈을 유지할 수 있습니다.

[실제로이 그래프는 더 복잡합니다. 모듈성을 뛰어 넘을 수 있기 때문에 모든 것을 다중 모듈 프로젝트에 결합 할 필요는 없습니다. 모듈러 소프트웨어연속 통합을 작성하려고합니다.

그러나 배포 된 릴리스는 변경 불가능해야합니다. 그들이 의존하는 버전은 돌로 고정되어야하므로 오늘 (+ 의존성) 선택된 버전은 내년에 사용 된 것과 동일합니다.

목표 :

개발자는 스냅 버전에서 작동
  • (따기 스냅 종속 로컬 또는 허드슨에서)
  • 출시 종속성 버전이 최신 (호환)에 대해 발표하게된다 (스냅 샷 제외)
  • 릴리스는 영원히 변경되지 않습니다.

    • 메이븐에서이 작업을 수행하는 가장 좋은 방법은 무엇입니까 : 항상 B와 C
    의 동일한 버전

    질문에서 A = 1.0.0에 따라 나타납니다? 이 유스 케이스를 설명하는 링크/문서가 있습니까?

  • maven release 플러그인을 사용하여 버전 범위를 확인하고 릴리스로 구울 수 있습니까? 을 감안할 때

: 기본 받는다는 (3.0.3)으로

  • 버전 범위에서 스냅 종속성을 선택합니다.
  • 스냅 샷과 출시, 별도의 저장소

받는다는와 지속적인 통합을하는 더 나은 방법이 있나요에 배포 할 수 있습니까?

답변

0

종속성이 SNAPSHOT 인 경우 릴리스 플러그인이 해제되지 않습니다. 그것이 maven이 릴리스가 불변임을 보장하는 방법입니다. 작은 다중 모듈 테스트 프로젝트를 만들고 그것에 릴리즈 플러그인을 실행하십시오. 그러면 행동이 더 잘 이해할 것입니다. 그것이 내가해야 할 일입니다.

저는 Jenkins가 제작하고 Artifactory에 배포 한 405 개의 POM으로 구성된 다중 모듈 프로젝트에서 작업합니다.

+0

릴리스 중에 버전 범위가 잠겨 있습니까? A 1.0이 B [1.0,2.0]에 의존하는 경우.그 의존성 범위는 릴리스 A에서 지속됩니까? –