Maven部署:如何获取snapsnot版本

Maven部署:如何获取snapsnot版本,maven,maven-3,Maven,Maven 3,是否有一种方法可以捕获实际的快照版本并将其输出到文件 [INFO] Uploading to nexus: https://xxxx/repository/xxx/xxx/0.0.1-SNAPSHOT/xxx-0.0.1-2 0180809.182425-2.pom 我可以在控制台输出中看到它,但我正在寻找一种可靠的方法来提取它并将其用于某些后期处理,例如,将其组装到docker映像中并部署它。正如khmarbaise所建议的,您可以从Maven扩展获取快照信息,例如记录时间戳,这也会给您提供

是否有一种方法可以捕获实际的快照版本并将其输出到文件

[INFO] Uploading to nexus: https://xxxx/repository/xxx/xxx/0.0.1-SNAPSHOT/xxx-0.0.1-2
0180809.182425-2.pom

我可以在控制台输出中看到它,但我正在寻找一种可靠的方法来提取它并将其用于某些后期处理,例如,将其组装到docker映像中并部署它。

正如khmarbaise所建议的,您可以从Maven扩展获取快照信息,例如记录时间戳,这也会给您提供一个很好的近似值,因为通常快照ID是基于时间戳的


由于快照通常不会无限期地保留在nexus中,因此在快照的可跟踪性方面,您需要谨慎对待快照的价值。如果您希望跟踪docker映像中的代码,而docker映像本身使用的是最新的/snapshot标记,那么您可能会在最后一次git提交()中找到更多的值。如果图像将有自己的专用标记,那么建议在源代码中也创建相应的标记

这在构建过程中很难实现,因为部署插件使用部署的时间戳来对工件进行版本化,并且除了在日志中之外,它不会共享该信息。这意味着您在构建过程中捕获的任何时间戳都将在该时间戳之前,因此不适合

要解决此问题,您需要解析命令输出或使用外部工具:

  • 使用khmarbais(如@Ryan Dawson所述)
  • 从Nexus读取包含最新快照信息的
    maven元数据
  • 搜索Nexus是否有公开该信息的api(我使用的是Artifactory,因此我不是Nexus的专家)

要将其放入docker图像中,您可以使用。。。为了记录它?你也可以把它看作是记录图像产生的另一种方式。也许有必要考虑一下nexus将快照保留多长时间,以及是否可以从快照链接回源代码。