从Maven快照中获取生成的唯一版本

时间:2014-10-24 13:18:25

标签: maven maven-deploy-plugin

根据the manual,对于Maven 3,我们被迫使用uniqueSnapshots=true。这意味着1.0-SNAPSHOT的每个部署实际上都由一些唯一的规范ID支持,例如1.0-20080207-230803-1

因此,调用mvn deploy会生成在调用mvn可执行文件之前无法确定其规范版本的工件。

因此,如果希望对之后生成的唯一ID调用任何操作,则必须在mvn deploy完成后尝试从maven可执行文件中提取生成的ID。

是否有任何此类机制来获取唯一ID?

例如,mvn deploy将产生以下输出:

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

但是如果不解析Maven的输出,似乎无法访问ID 0.11-20150220.165404-2

示例场景:mvn build会将新(唯一)工件推送到内部存储库管理器。完成后,我们希望通过HTTP推送通知,以通知某个远程应用程序新的SNAPSHOT版本的应用程序。

虽然我们的存储库管理器允许我们查询最新的SNAPSHOT版本,但与能够将绝对引用传递给特定版本相同。

1 个答案:

答案 0 :(得分:2)

maven-deploy-plugin不会将部署时间戳存储在系统属性中。

如果您想查看源代码(并可能发出增强请求),则可以通过项目org.apache.maven.artifact.transform.SnapshotTransformation的方法getDeploymentTimestamp在类maven-artifact-manager中计算此部署时间戳。 }。

部署工件的最终版本以方法construcVersion计算:SNAPSHOT替换为timestamp-buildNumber,其中timestampgetDeploymentTimestamp的结果并且buildNumber是一个增量。

应该可以使用System.setProperty("something", version)存储此构建版本;然后使用pom.xml${something}中访问它。