java Maven如何安装/部署时间戳快照
环境:Maven 3.3.9
嗨
我有一个maven jar模块,版本为1.0-SNAPSHOT。当我执行mvn install
时,安装到本地存储库(~/.m2/repository
)中的jar没有时间戳。我同意,您希望在~/.m2/repository
repo中有时间戳jar的情况并不常见。但还有几个问题:
mvn install
是否自动附加时间戳?寻找一些 配置方式,而不是在最终名称中使用${timestamp}
李>- 自动时间戳机制是否适用于
mvn deploy
李> - 有没有办法告诉maven使用
~/.m2/repository
它是为mvn deploy
而设计的吗李>
谢谢
拉凯什
# 1 楼答案
mvn install
只会将您的项目放入本地缓存,这意味着它可以用于您机器上的其他项目mvn deploy
将工件部署到您的远程存储库中,该存储库通常是公司存储库管理器在
SNAPSHOT
的情况下,这意味着此工件尚未完成,正在开发中。这意味着您可以创建同一版本的多个状态,如1.0.0-SNAPSHOT
。在部署到存储库管理器期间创建的时间戳旨在使不同的工件可用于开发。如果要使用快照的最新版本,可以通过-U
选项进行控制准备就绪后,您将创建一个所谓的版本,该版本将设置为类似
1.0.0
(无快照)的版本,该版本也将部署到一个不可变的版本存储库中此外,在本地缓存
$HOME/.m2/repository
中设置时间戳并没有真正意义,因为您可以控制在那里安装工件的时间,而不是其他人,并且您应该防止使用finalName
更改,因为这只适用于target
文件夹,而不适用于本地缓存。 最后,为mvn deploy
使用本地缓存没有意义,因为这背后的想法是什么?最好是开始使用存储库管理器,如Nexus、Artifactory或Archiva,特别是在公司环境中工作的时候# 2 楼答案
除@khmarbaise的答案外,请参见以下参考资料:
Maven / Introduction to Repositories:
Maven: The Complete Reference, 15.2.8. Repositories:
Repository - SNAPSHOT Handling内容如下:
但我没有找到任何最新的文档,其中集成了此功能。(@khmarbaise?)
Understanding Maven Version Numbers
Maven Dependency Resolution - A Repository Perspective
长话短说:
相同的快照版本可以从不同的主机部署到远程存储库,因此必须在那里进行区分。它们通过时间戳(和构建编号)进行区分
只有在Maven解析并从远程下载的情况下,本地存储库中才会有一个带有时间戳(和构建号)的工件
因此: