按照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
,其中timestamp
是getDeploymentTimestamp
的结果,而buildNumber
是增量。
应该可以使用System.setProperty("something", version)
存储此构造版本;然后使用pom.xml
在${something}
中对其进行访问。
关于maven - 从Maven快照获取生成的唯一版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32822597/