maven을 사용하여 realease를 만들 때 반드시 결정적이어야합니다. 즉 일단 생성되면 변경 될 수 없습니다 (즉, 소스는 변경할 수 없습니다. 및 종속성은 변경할 수 없습니다).
따라서 moduleB에 대한 종속성이있는 moduleA와 moduleA의 릴리스를 생성 할 때. moduleB는 moduleA가 출시되기 전에 릴리스되어야하며 moduleA는 releaseB 버전의 moduleB에 의존해야합니다.
한 가지 중요한 점은 은 (는) 스냅 샷으로 돌아 가지 않아야한다는 것입니다. 적어도 내가 이해로는 의미
- 는
- 다음 종속성을 다시 변경할 moduleB-1.0.0
- 만들 moduleA-1.0.0 릴리스에 대한 종속성을 변경
- moduleB-1.0.0 버전을 만들 moduleB-1.0.0-SNAPSHOT 더 이상 사용할 수 없습니다 이슈를 : moduleB-1.0.0-SNAPSHOT
에 moduleB-1.0.0가 존재하면 (즉, 해제) 분명해야합니다. 대신 의
는해야 많은 스냅 아티팩트에 따라 모듈을 출시 있음을 의미하며, (예를 moduleB-SNAPSHOT-1.0.1에 대한) 다음 스냅 샷 버전
-업데이트 의존성이 아닌 다시 스냅로 이동 모든 종속성이 주요 유물을 공개하기 전에 공개되어야하기 때문에 쉬운 프로세스입니다.
대부분의 경우, 동일한 버전 관리 전략을 사용하는 많은 다른 아티팩트 (회사 모듈이라고 부름)에 따라 주요 아티팩트가 있습니다. 따라서 여러 종속성에서 사용되는 버전을 한 곳에서 보유하는 속성 corporate-module-version
을 정의 할 수 있습니다.
릴리스 프로세스는 다음
- 릴리스 버전 번호 1.0.0 (받는다는 출시-플러그인을 사용하여와 모든 스냅 샷 의존성 :이 단계 SCM에서 기업 - 모듈 모두의 pom.xml 후 1.0입니다.1-SNAPSHOT)
corporate-module-version
속성을 주 이슈에서 "1.0.0"으로 변경합니다 (모든 SNAPSHOT 종속성이 방금 릴리스 됨으로 대체 됨). 주요 유물을 해제 (그리고 그 후, SCM의 새로운 버전은 1.0.1-SNAPSHOT 같은 것) : 버전)
- 는
corporate-module-version
받는다는 출시 - 플러그인
- 잡고 수정 된 pom.xml 파일을 커밋
- 수동으로
corporate-module-version
속성을 "1.0.1-SNAPSHOT"으로 변경합니다. 그는 주요 유물 (모든 종속성이 최신 스냅 샷 버전으로 교체되도록)
중요 발언 : 모든 기업의 모듈을 들고 멀티 모듈 부모 프로젝트를 가진 것은 모두 출시 한 번에 수행 할 수있는 필수입니다 기업 모듈. maven-release-plugin과 다중 모듈 부모 프로젝트에 너무 많은 문제가 발생하지 않도록하려면 부모 pom.xml을 모든 자식 pom.xml의 상위 디렉토리에 두어야합니다 (이는 maven에서 설계 한 권장 사항이지만 불행히도 때때로 이클립스는 계층 적 프로젝트를 좋아하지 않으므로 이클립스 사용자는이를 따르지 않습니다.
스냅 샷으로 돌아가서 말했을 때 나는 스냅 샷의 다음 버전을 의미했습니다. 필자는 모든 릴리스가 속성으로 최상위 수준에서 정의 되었기 때문에 각 릴리스에 따라 회사 버전을 수동으로 변경해야하지만 이상적인 솔루션은 아니지만 실행 가능할 것으로 보입니다. – Jeff