根据
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版本,但这与能够将绝对引用传递给特定版本不同.
最佳答案 maven-deploy-plugin不会将部署时间戳存储在系统属性中.
如果您想查看源代码(并且可能发出增强请求),则可以通过项目maven-artifact-manager
的方法getDeploymentTimestamp
在类org.apache.maven.artifact.transform.SnapshotTransformation
中计算此部署时间戳.
部署工件的最终版本在方法construcVersion
中计算:SNAPSHOT由timestamp-buildNumber替换,其中timestamp是getDeploymentTimestamp的结果,buildNumber是增量.
应该可以使用System.setProperty(“something”,version)存储这个构造的版本;然后使用${something}在pom.xml中访问它.