当前位置:  开发笔记 > 编程语言 > 正文

获取所有maven依赖项,包括插件依赖项

如何解决《获取所有maven依赖项,包括插件依赖项》经验,为你挑选了0个好方法。

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

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

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

COPY ./pom.xml /opt/inbot-api/pom.xml RUN mvn dependency:copy-dependencies clean

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

然后我们将源树复制到映像并运行完整的构建.

COPY ./src /opt/inbot-api/src RUN mvn -e clean install

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

我们的DockerFile还有很多不太重要的东西,但最终它产生了一个包含我们编译工件的docker文件,一个nginx配置以及我们可以部署到ECS的所有运行时依赖项.

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

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

我很感激有关如何改进这一点的任何反馈.

更新

我现在做了

RUN mvn -B -T 4 dependency:copy-dependencies dependency:resolve-plugins dependency:go-offline clean

之后它还会下载更多东西mvn clean install.一个mvn -o clean install仍然失败,尽管dependency:go-offline.所以,这个插件似乎已经被打破了.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有