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