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

jwa*_*jwa 5 maven maven-deploy-plugin

根据手册,在 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
Run Code Online (Sandbox Code Playgroud)

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

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

虽然我们的资源库管理使我们能够查询最新的快照版本,这是一样的能够通过周围绝对引用到特定版本。

Tun*_*aki 4

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

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

已部署工件的最终版本在方法 中计算construcVersionSNAPSHOT被 替换timestamp-buildNumber,其中timestamp是 的结果getDeploymentTimestampbuildNumber是增量。

应该可以用 ; 存储这个构造版本System.setProperty("something", version)。然后在pom.xmlwith中访问它${something}