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

标签 maven maven-deploy-plugin

按照the manual的要求,在Maven 3中,我们不得不使用uniqueSnapshots=true。这意味着1.0-SNAPSHOT的每次部署实际上都由一些唯一的规范ID(例如, 1.0-20080207-230803-1

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

因此,如果希望对随后生成的唯一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导致将新的(唯一的) Artifact 推送到内部存储库管理器。完成之后,我们希望通过HTTP推送通知,以通知某个远程应用程序该应用程序的新SNAPSHOT版本。

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

最佳答案

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

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

部署的 Artifact 的最终版本在 construcVersion 方法中计算:SNAPSHOT替换为timestamp-buildNumber,其中timestampgetDeploymentTimestamp的结果,而buildNumber是增量。

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

关于maven - 从Maven快照获取生成的唯一版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32822597/

相关文章:

Maven 搜索 site.xml 缺少的英语语言环境

eclipse - 替换产品 ico 文件时 Tycho 出错

maven - 如何使用 Maven 修改 POM 文件的设置以支持 Artifactory 上的访问 token

java - 如何仅部署 Maven 项目中的源 jar?

maven - Hive 0.14 UDF Maven 项目缺少依赖

java - 为什么我的 Maven 指向旧的中央存储库 url?

java - 为什么 Maven swagger 插件不扫描外部模块?

java - 如何将 maven 插件上传到 Github 包?

java - 在 Maven 部署过程中添加一个附加文件夹