2011-03-18 2 views
5

현재 Maven tools for Project Dash으로 작업 중입니다. 미해결 문제 중 하나는 실수를 처리하는 방법입니다.패치 용 Maven 아티팩트 버전

Maven central says : 게시 된 내용이 없습니다. 이는 Maven이 릴리스가 변경되었는지 여부를 파악하지 않으므로 (SNAPSHOT과 달리) 절대로 시도하지 않기 때문입니다.

그러나 이클립스 3.6.2의 새로운 "릴리스"를 만들어야 할 수도 있습니다. 어떤 버전 번호를 사용해야합니까? 3.6.2.1, 3.6.2-1, 3.6.2_1, 3.6.2pl1? 왜?

답변

9

버전 번호 규칙은 major.minor.build입니다.

major은 공용 인터페이스가 호환되지 않는 경우 변경됩니다. 예를 들어, 메소드가 제거되거나 서명이 변경됩니다. 라이브러리를 사용하는 클라이언트는 다른 주요 버전의 라이브러리를 사용할 때주의해야합니다.

minor은 공용 인터페이스가 호환되는 방식으로 변경되면 증가합니다. 예를 들어, 메소드가 추가됩니다. 클라이언트는 새로운 버전을 사용하는 것에 대해 걱정할 필요가 없습니다. 보는 데 익숙한 모든 기능이 그대로 유지되고 작동하기 때문입니다.

build은 기능 구현이 변경 될 때 증가되지만 서명은 추가되거나 제거되지 않습니다. 예를 들어 버그를 발견하고 수정했습니다. 클라이언트는 새 버전으로 업데이트해야하지만, 깨진 동작에 의존하기 때문에 작동하지 않으면 쉽게 다운 그레이드 할 수 있습니다.

여기 까다로운 문제는 누군가 다른 사람이 작성하고 발표 한 코드를 수정하는 것처럼 들리는 것입니다. 여기에서 컨벤션은 내가 본 것처럼 -yourname-version 또는 단지 version으로 버전 번호를 붙이는 것입니다. 예를 들어, linux-image-2.6.28-27은 우분투 커널 이미지의 가능한 이름입니다.

Maven에서 아티팩트 좌표를 구별하기 위해 대시를 사용 했으므로 혼란을 피하기 위해 .version을 추가하는 것이 좋습니다 (아주 오래간만에, 분명히). 따라서이 경우 3.6.2.1입니다.

+1

좋은 답변입니다. 또한 시맨틱 버전 관리에 대해 읽어 보시기 바랍니다 : http://semver.org/ – Nicholas

0

Maven 프로젝트 버전은 this과 같이 지정됩니다.

<major version>.<minor version>.<incremental version>-<qualifier> 

당신이 규정 찾고있는 버전 번호를 변경하지 않기 때문에. 한정어의 이름에 대한 일반적인 권장 사항이 있는지 나는 모른다. 예 : 봄의 사람들 그들은 한정자를 분리해서하는 하이픈/대시에게 표기법을 사용하지 않은 this

2.5.6.SEC01 
2.5.6.SR02 
3.0.0.M3 

같은 것을했다.

당신이 한 일 중에 버전의 주문과 관련하여주의해야합니다! 내가 추가 한 첫 번째 링크를 살펴보십시오.

업데이트 : 최근 변경/추가 사항에 대한 @krzyk 의견을 살펴보십시오.

+1

현재 http://www.mojohaus.org/versions-maven-plugin/version-rules.html에 따르면 규칙은'. . ] [> - ' –

+0

@krzyk 변경 사항을 언급 해 주셔서 감사합니다. 내 답변을있는 그대로 그대로두고 내 댓글에 추가하지 않습니다. – FrVaBe

0

메이븐이 릴리스 내 의견이 아니라 기본적인 이유에서입니다

변경이 있는지 여부를 그림을 시도 적이 있기 때문입니다. 그 이유는 장래에 안정적인 빌드를 갖는 것입니다. 당신은 귀하의 pom에 버전을 정의하고 그게 전부입니다. 누군가가 중앙에서 인공물을 제거하거나 악조건으로 바뀌면 기존 빌드가 미래에 작동 할 것이라고 확신 할 수 없거나 오래된 빌드가 작동 할 것입니다.

버전 번호는 사용자가 결정합니다. 3.6.2.1을 사용하는 것이 좋습니다.