2014-10-24 4 views
4

the manual, Maven 3에서 우리는 uniqueSnapshots=true을 사용해야합니다. 즉, 1.0-SNAPSHOT의 각 배포에는 실제로 고유하고 정식 인 ID가 사용됩니다. 1.0-20080207-230803-1.Maven 스냅 샷에서 생성 된 고유 버전 얻기

결과적으로 mvn deploy을 호출하면 mvn 실행 파일이 호출되기 전에 표준 버전을 확인할 수없는 아티팩트가 생성됩니다.

그러므로 이후에 생성 된 고유 ID에 대한 작업을 호출하려면 mvn deploy이 완료된 후 생성 된 ID를 maven 실행 파일에서 추출해야합니다.

고유 ID를 얻기위한 메커니즘이 있습니까?

예를 들어, mvn deploy는 다음과 같은 출력을 생성합니다 :

Uploading: https://oss.sonatype.org/content/repositories/snapshots/io/airlift/slice/0.11-SNAPSHOT/slice-0.11-20150220.165404-2.jar 

을하지만 메이븐의 출력을 구문 분석하지 않고 ID 0.11-20150220.165404-2에 액세스 할 수있는 방법은없는 것 같다.

예제 시나리오 : mvn 빌드로 인해 새로운 (고유 한) 이슈가 내부 리포지토리 관리자로 푸시됩니다. 이 작업이 완료되면 HTTP를 통해 알림을 보내 일부 원격 애플리케이션에 새로운 SNAPSHOT 버전의 애플리케이션을 알리고 자합니다.

우리의 저장소 관리자는 최신 SNAPSHOT 버전을 쿼리 할 수 ​​있지만 이 아닌은 특정 버전에 대한 절대 참조를 전달할 수있는 것과 같습니다.

답변

2

maven-deploy-plugin은 배포 타임 스탬프를 시스템 속성에 저장하지 않습니다.

소스 코드를 살펴보고 (향상 요청을 할 수 있음)이 배포 시간 소인은 org.apache.maven.artifact.transform.SnapshotTransformation 클래스의 getDeploymentTimestamp 프로젝트 maven-artifact-manager에 의해 계산됩니다.

전개 아티펙트의 최종 버전이 방법 construcVersion 산출 경우 : SNAPSHOTtimestampgetDeploymentTimestampbuildNumber의 결과 증가분이다 timestamp-buildNumber로 대체된다.

System.setProperty("something", version)으로 구성된 버전을 저장할 수 있어야합니다. ${something}으로 pom.xml에서 액세스하십시오.

관련 문제