gpt4 book ai didi

java - 获取所有 Maven 依赖项,包括插件依赖项

转载 作者:IT老高 更新时间:2023-10-28 21:19:19 26 4
gpt4 key购买 nike

我正在尝试让 maven 下载所有依赖项(编译、测试、插件等),这样我就可以避免让我们的 dockerized 构建浪费不必要的时间一遍又一遍地下载它们。

我们已经对我们的 maven 构建进行了 docker 化,这样我们就可以从我们的 jenkins 运行它,而无需在 jenkins 机器上安装大量构建特定的依赖项(Java、redis、maven 依赖项等)。我们的构建依赖于增量 docker 构建,它只执行实际需要重新运行的步骤。

我们的主要构建是一个DockerFile,它有几个步骤来安装jdk、maven等。然后它做了一个


复制 ./pom.xml/opt/inbot-api/pom.xml
运行 mvn 依赖项:复制依赖项清理

这会将依赖项下载到本地 maven 存储库,然后清除目标目录。

然后我们将源代码树复制到镜像并运行完整的构建。


复制 ./src/opt/inbot-api/src
运行 mvn -e 全新安装

一般的想法是,在干净的机器上,docker 将执行所有的 RUN 步骤,但在增量构建上它只会重新运行需要重新运行的东西。在每个运行步骤之后,它都会存储一个中间图像。因此,如果 pom 文件没有更改,则无需重新运行依赖项获取步骤,因为它会产生完全相同的结果。因此,它会加载已下载的所有依赖项的缓存中间镜像。这正是我们想要的。

我们的 DockerFile 有很多东西在这里并不那么相关,但最终它会生成一个 docker 文件,其中包含我们编译的 Artifact 、一个 nginx 配置和我们可以部署到 ECS 的所有运行时依赖项。

这几乎可以工作,除了 mvn clean install 仍然会在每次构建时下载额外的插件依赖项。因此,这些是复制依赖项步骤未涵盖的依赖项。

我的问题,如何让 RUN mvn dependency:copy-dependencies clean 下载所有依赖项,包括插件依赖项。我见过人们实际上做了一个 mvn verify clean 而不是 mvn dependency:copy-dependencies clean 但在我们的例子中这有点慢。我想知道是否有更好的方法来做到这一点。

如果有任何关于如何改进的反馈,我将不胜感激。

更新

我现在做一个


运行 mvn -B -T 4 依赖项:复制依赖项依赖项:解析插件依赖项:go-offline clean

之后,它仍然使用 mvn clean install 下载更多内容。 mvn -o clean install 仍然失败,尽管 dependency:go-offline。所以,这个插件好像坏了。

最佳答案

这对我有用,无需下载其他依赖项:

RUN mvn -B dependency:resolve dependency:resolve-plugins

关于java - 获取所有 Maven 依赖项,包括插件依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34203179/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com