【问题标题】:Docker Multimodule Maven Build - Copy All POM Files to Appropriate DirectoriesDocker 多模块 Maven 构建 - 将所有 POM 文件复制到适当的目录
【发布时间】:2020-02-12 14:14:17
【问题描述】:

我正在尝试为我的多模块项目Dockerize maven 构建。我有一个嵌套文件结构,其中我的项目的所有模块都包含在 modules/ 目录中。作为构建的一部分,我想缓存依赖项,因此容器不需要拉取依赖项,除非 POM 文件被更新(即 Java 更改不应该每次都需要拉取依赖项)。我目前通过对每个文件使用单独的 Docker 命令将每个 POM 复制到构建容器中的适当目录中来进行此工作;但是,我目前大约有 10 个模块,将来可能会添加更多模块。我想避免在添加模块时单独复制每个 POM。我看到 COPY 支持源文件参数的通配符语法,但根本无法使其正常工作。我目前的命令是:

COPY modules/*/pom.xml ./

但这似乎没有正确复制。我确信有一种方法可以复制这些文件,而不必为每个文件指定一个命令。执行此操作的正确命令是什么?非常感谢您的任何帮助!

【问题讨论】:

  • 我现在也有同样的问题。您是否知道如何在不为每个 pom 文件使用单独的 COPY 命令的情况下解决此问题?
  • 不,抱歉。仍然以相同的方式设置我的 dockerfile。

标签: java maven docker


【解决方案1】:

在构建特定模块时是否需要构建所有同级模块?如果没有,我的解决方案是仅复制所需的 POM,然后在将其复制到容器中后更改父 pom.xml

RUN mv pom.xml pom.xml.org
RUN cat pom.xml.org | grep -vP '<module>(?!my-commons|my-module)' >> pom.xml
RUN mvn -pl my-commons,my-module dependency:go-offline

通过从父级中删除其他模块引用,您可以构建您的项目,就好像它只有所需的模块一样。

【讨论】:

    猜你喜欢
    • 2012-01-07
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    相关资源
    最近更新 更多