在命令行中使用 maven 下载最新版本的工件

在命令行中使用 maven 下载最新版本的工件

归根结底,我希望开发环境中的 puppet 管理服务器始终能够获取其所运行应用程序的最新版本。虽然 maven 并非如此确切地为此,由于所有 shadowjar 都与其依赖项位于同一个存储库中,并且都带有 md5 校验和以比较 maven 已生成的文件,因此这似乎是一个显而易见的选择。

问题是,虽然我设法通过命令行获取最新版本,但我却无法让 maven 检查 pom.md5 来决定是否需要更新本地 jar。我尝试使用依赖插件进行一些操作,但当它已经有一个具有相同的文件时版本在本地,它只是拒绝更新它,即使存储库中有更新的建造该版本的。所以我尝试了一些版本插件,但我得到的仍然是版本号。我查看了校验和插件,但它似乎专用于生成校验和。有一个检查目标,但它需要一些我没有的 csv,而且我不确定如何获取。

真的,我只想让 maven 将远程 .jar.md5 与本地副本进行比较,如果它们不匹配,则重新下载 jar,即使它们是同一版本。我想从命令行执行此操作。但我尝试这样做时头发都白了……

答案1

Maven 在依赖管理方面非常高效。因此它从来不会重新下载发布 jar 文件。

选项1

使版本成为SNAPSHOT

选项 2 指定版本范围

<version>[1.0,)</version>

最后

mvn -U -C clean package (or what ever you need)

答案2

您想使用 来调用mvn -U,因为在这里回答

快照更新下载策略由以下设置控制:

updatePolicy字符串下载更新的频率 - 可以是“总是”、“每日”(默认)、“interval:XXX”(以分钟为单位)或“从不”(仅当本地不存在时)。

您还可以使用命令mvn maven-dependency-plugin:purge-local-repository 按照说明进行操作,运行时强制进行新的下载mvn dependency:resolve或者生命周期目标 generate-sources或更高(即compile:)。

相关内容