java - 如何自动更新本地maven存储库.m2文件夹以进行离线构建

标签 java maven artifactory

我正在开发一个大型项目,该项目有很多依赖项,其中许多是快照依赖项。而且由于快照依赖项,构建需要花费大量时间(大约一个小时),因为即使快照版本没有更改,它也需要检查每个依赖项是否在远程 Artifact 中更新。对于发行版本,没有问题,因为只有更新版本后才检查远程,否则使用 .m2 中的本地可用 jar。

与上述场景相比,如果我在本地 .m2 中拥有可用的所有依赖项时使用 -o 标志进行离线构建,则构建只需要大约 5-10 分钟,这可以节省大约 40-45 分钟的构建时间时间。但由于项目很大并且有很多人正在处理它,每当我拉出更改时,可能会有一些代码更改,这需要最新的快照和离线构建中断,因为即使是单个不匹配也可能导致构建中断。

为了解决这个问题,我正在考虑以下方法: 1. 始终使用 -o 标志进行离线构建。 2.创建一些外部脚本(可能在nodejs中),如果pom中给出的依赖项在远程 Artifact 上更新,它将定期进行扫描。如果是,则拉入本地 .m2,否则不执行任何操作。

有没有更好的替代方案? 另外,一旦我弄清楚要更新哪个 Artifact ,我可以使用什么方法强制仅更新该特定 Artifact 而无需传递依赖项? 使用上述方法,如果任何传递依赖项发生更改,仍然有可能导致构建中断,但这种情况不会经常发生,在这种情况下我必须运行完整的在线构建。

我考虑过设置本地代理 Artifact 服务器,但在这种情况下它没有帮助,因为对于快照解析,它会以任何方式转到远程存储库。如果我将缓存时间保持更长的时间,就有可能再次丢失更改和构建中断。

最佳答案

您可以控制快照检查:

Download policy

updatePolicy String The frequency for downloading updates - can be "always", "daily" (default), "interval:XXX" (in minutes) or "never" (only if it doesn't exist locally).

https://maven.apache.org/ref/3.6.3/maven-settings/settings.html#class_snapshots

但是您可能还有其他问题,因为下载 Artifact 浪费了 45 分钟的构建时间。

关于java - 如何自动更新本地maven存储库.m2文件夹以进行离线构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60004489/

相关文章:

java - 将构建和提交哈希添加到 list

java - 依赖项不应指向项目目录中的文件

maven - 运行 mvn clean install 时不要运行集成测试

java - Maven 无法解析依赖项(返回代码为 : 409 , ReasonPhrase:Conflict)

tomcat - Artifactory rpm 安装已启动但控制台 webapp 无法正常工作

java - 在 Ubuntu 20 上安装 openJDK+openJFX 8

java - gradle 构建中缺少 mainClassName 属性的 Gradle 错误

maven - 无法在启用 LDAP 的情况下使用加密密码部署 Artifact

java - 创建 pdf 并与 pdfbox 合并

java - Java中的时区问题