用Docker和Kotlin缓存Maven

用Docker和Kotlin缓存Maven,maven,docker,kotlin,dockerfile,Maven,Docker,Kotlin,Dockerfile,在构建Kotlin项目之前,我正在尝试预热Docker+Maven缓存。 正如许多Maven/Docker线程所建议的,我的Docker文件如下所示: COPY pom.xml . RUN mvn dependency:go-offline COPY ./src/ src/ RUN mvn package 其思想是,如果我更改了./src目录中的文件,我希望docker cache跳过maven冗长的依赖项下载页面 我的问题是mvn包命令仍然下载大量文件。 我尝试使用mvn-o包(mave

在构建Kotlin项目之前,我正在尝试预热Docker+Maven缓存。 正如许多Maven/Docker线程所建议的,我的Docker文件如下所示:

COPY pom.xml .
RUN  mvn dependency:go-offline
COPY ./src/ src/
RUN  mvn package
其思想是,如果我更改了./src目录中的文件,我希望docker cache跳过maven冗长的依赖项下载页面

我的问题是
mvn包
命令仍然下载大量文件。 我尝试使用
mvn-o包
(maven offline标志)来诊断缺少哪些依赖项,但它只是抱怨无法下载依赖项。但是我希望依赖项可以在前一步中下载。以下是使用“-o”标志时出现的错误:


试试下面的mvn命令,它把我从maven错误中解救了出来

RUN  mvn --batch-mode --errors --strict-checksums --threads 1C \
     org.apache.maven.plugins:maven-dependency-plugin:3.0.2:go-offline

RUN  mvn --batch-mode --errors --offline package

从我从各种来源收集的信息来看,离线并不总是以正确的方式处理缓存包,而将其中一些包留在本地存储库之外(请参阅上的pull request)

在我的例子中,标准的
mvn依赖项:gooffline
使用了
gooffline
2.8并返回了错误。然后我尝试运行
mvn org.apache.maven.plugins:maven dependency plugin:3.2.0:go offline
,但不同的软件包仍然存在一些问题

对我有效的是使用了一个不同的“离线”插件

使用


终于完成了任务。

请解释每个标志的用途。我对您的解决方案进行了讨论。似乎-B是唯一重要的标志。阅读CLI文档时,我不知道它为什么会起作用,但它确实起作用:-)。请参阅了解每个CLI选项的含义。@sarang关于我之前的评论:文档没有解释为什么-B与“脱机”有关。(在发表我的评论之前,我已经阅读了:-)这将有助于为这个答案添加更多细节
RUN  mvn --batch-mode --errors --strict-checksums --threads 1C \
     org.apache.maven.plugins:maven-dependency-plugin:3.0.2:go-offline

RUN  mvn --batch-mode --errors --offline package
mvn de.qaware.maven:go-offline-maven-plugin:resolve-dependencies