获取所有的Maven依赖包括插件依赖

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

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

我们的主要构build是一个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步骤,但是在增量构build中它只会重新运行需要重新运行的东西。 在每个运行步骤之后,它存储中间图像。 所以,如果pom文件没有改变,那么不需要重新运行依赖性提取步骤,因为它会产生完全相同的结果。 所以,而是加载已经下载的所有依赖关系的caching中间映像。 这正是我们想要的。

我们的DockerFile还有很多不同的地方,但最终它生成了一个docker文件,其中包含我们编译的工件,一个nginxconfiguration以及我们可以部署到ECS的所有运行时依赖项。

这几乎工程,除了mvn clean install仍然下载额外的插件依赖关系的每个构build。 所以,这些是依赖关系,副本依赖关系步骤不包括。

我的问题,我怎么得到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 installmvn -o clean install仍然失败,尽pipedependency:go-offline 。 所以,这个插件似乎被破坏了。

对于插件我build议使用mvn dependency:resolve-plugins

请参阅文档: https : //maven.apache.org/plugins/maven-dependency-plugin/