归根结底,我希望开发环境中的 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
:)。