노트:
이 답변은 Maven 2에만 적용됩니다! 언급 LATEST
및 RELEASE
메타 버전 은 6 년 전 Maven 3에서 "재생 가능한 빌드를 위해"삭제되었습니다 . 이 Maven 3 호환 솔루션을 참조하십시오 .
항상 최신 버전을 사용하려는 경우 Maven에는 버전 범위의 대안으로 사용할 수있는 두 개의 키워드가 있습니다. 더 이상 사용중인 플러그인 / 종속성을 제어 할 수 없으므로이 옵션을주의해서 사용해야합니다.
플러그인 또는 종속성에 의존 할 때 LATEST 또는 RELEASE의 버전 값을 사용할 수 있습니다. LATEST는 특정 저장소에서 가장 최근에 배포 된 아티팩트의 최신 릴리스 또는 스냅 샷 버전을 나타냅니다. RELEASE는 저장소에서 마지막 비 스냅 샷 릴리스를 나타냅니다. 일반적으로 아티팩트의 비 특정 버전에 의존하는 소프트웨어를 설계하는 것은 모범 사례가 아닙니다. 소프트웨어를 개발하는 경우 RELEASE 또는 LATEST를 편의상 사용하여 타사 라이브러리의 새 릴리스가 릴리스 될 때 버전 번호를 업데이트하지 않아도됩니다. 소프트웨어를 출시 할 때는 항상 프로젝트가 특정 버전에 의존하여 빌드 또는 프로젝트가 통제 할 수없는 소프트웨어 릴리스의 영향을받을 가능성을 줄 이도록해야합니다.
자세한 내용은 Maven 서적 의 POM 구문 섹션 을 참조하십시오. 또는 종속성 버전 범위 에 대한이 문서를 참조하십시오 .
- 대괄호 (
[
& ]
)는 "닫힌"(포함)을 의미합니다.
- 괄호 (
(
& )
)는 "열기"(독점)를 의미합니다.
다음은 다양한 옵션을 보여주는 예입니다. Maven 저장소에서 com.foo:my-foo에는 다음 메타 데이터가 있습니다.
<?xml version="1.0" encoding="UTF-8"?><metadata>
<groupId>com.foo</groupId>
<artifactId>my-foo</artifactId>
<version>2.0.0</version>
<versioning>
<release>1.1.1</release>
<versions>
<version>1.0</version>
<version>1.0.1</version>
<version>1.1</version>
<version>1.1.1</version>
<version>2.0.0</version>
</versions>
<lastUpdated>20090722140000</lastUpdated>
</versioning>
</metadata>
해당 아티팩트에 대한 종속성이 필요한 경우 다음 옵션이 있습니다 ( 물론 여기에 관련 옵션 만 표시하여 다른 버전 범위를 지정할 수 있음).
정확한 버전을 선언하십시오 (항상 1.0.1로 해결됨).
<version>[1.0.1]</version>
명시 적 버전을 선언하십시오 (Maven이 일치하는 버전을 선택할 때 충돌이 발생하지 않는 한 항상 1.0.1로 해결됨).
<version>1.0.1</version>
모든 1.x의 버전 범위를 선언하십시오 (현재 1.1.1로 해결됨).
<version>[1.0.0,2.0.0)</version>
개방형 버전 범위를 선언합니다 (2.0.0으로 해결).
<version>[1.0.0,)</version>
버전을 최신 버전으로 선언 (2.0.0으로 해결) (maven 3.x에서 제거됨)
<version>LATEST</version>
버전을 RELEASE (1.1.1로 해결됨)로 선언하십시오 (maven 3.x에서 제거됨).
<version>RELEASE</version>
기본적으로 자체 배포는 Maven 메타 데이터에서 "최신"항목을 업데이트하지만 "release"항목을 업데이트하려면 Maven super POM 에서 "release-profile"을 활성화해야합니다 . "-Prelease-profile"또는 "-DperformRelease = true"를 사용하여이 작업을 수행 할 수 있습니다.
Maven이 의존성 버전 (LATEST, RELEASE 및 버전 범위)을 선택할 수있는 모든 접근 방식은 이후 버전이 다른 동작을 가질 수 있기 때문에 시간 문제를 빌드 할 수있게 해줍니다 (예 : 의존성 플러그인이 이전에 기본값을 전환했습니다) 혼란스러운 결과와 함께 true에서 false 로의 값).
따라서 일반적으로 릴리스에서 정확한 버전을 정의하는 것이 좋습니다. 으로 팀의 답변이 지적은 받는다는 - 버전 - 플러그인은 의존성 버전, 특히 업데이트를위한 편리한 도구입니다 사용 - 최신 - 버전 : 버전 및 버전 : 사용 - 최신 - 방출 목표를.