强制 Maven 使用单一快照依赖的本地副本

Force Maven to use local copy of single snapshot dependency

我的 Maven 项目有 2 个快照依赖项。我需要远程仓库中可用的依赖项 A 的最新快照,同时,我的本地 ~/.m2 仓库中可用的快照依赖项 B 的版本。

快照依赖项 B 也在远程仓库中,但我的 CI 作业需要使用此快照依赖项的本地构建实例。因此,快照上没有时间戳,因此其文件路径为 ~/.m2/repository/groupId/artifactId/1.0.0-SNAPSHOT/artifactId-1.0.0-SNAPSHOT.tar.gz

由于拆分要求,--no-snapshot-updates 和配置 settings.xml 等解决方案无法解决问题。

有什么建议吗?

更新:如果本地生成的快照不到 24 小时,则默认情况下会起作用。我不确定我在最初的实验中配置错误。事实证明,使用了快照 B 的本地版本,因为它的文件系统上次更新时间不到 24 小时。本地仓库中不存在快照 A,因此按预期从远程仓库中获取。

试试timestamp,版本可以用1.0.0

查看这篇文章: How do I add time-stamp information to Maven artifacts?

我会通过添加后缀来更改 B 的版本:当 B 现在是 2.0.0-SNAPSHOT 时,将其设为 2.0.0-LOCAL-SNAPSHOT。如果您通过此版本构建和引用 B,则可以确保 B 的任何远程版本都不会干扰您的构建。

如果本地生成的快照不到 24 小时,则默认情况下会起作用。我不确定我在最初的实验中配置错误。事实证明,使用了快照 B 的本地版本,因为它的文件系统上次更新时间不到 24 小时。本地仓库中不存在快照 A,因此按预期从远程仓库中获取。