java - Docker 多模块 Maven 构建 - 将所有 POM 文件复制到适当的目录

标签 java maven docker

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

COPY modules/*/pom.xml ./

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

最佳答案

构建特定模块时是否需要构建所有兄弟模块?如果没有,我的解决方案是仅复制所需的 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
通过从父级中删除其他模块引用,您可以构建您的项目,就好像它只有所需的模块一样。

关于java - Docker 多模块 Maven 构建 - 将所有 POM 文件复制到适当的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58402441/

相关文章:

java - 需要帮助在 Java 中查找正则表达式来捕获字符串中所有格式的日期

docker - 备份和恢复 docker 命名卷

docker - 如何在 docker 上设置多个指向相同值的 env 变量?

java - 搜索基于网络的分析器来测量基于网络的应用程序的性能

Java PDFBox,如何从 PDDocument 获取文件对象

java - 无法在 OSX 上安装 R JavaGD 包

java - 不能在插件中引用 org.osgi.*

java - heroku 使用什么版本的 Maven?

maven - leiningen project.clj 中的 pom.xml maven 属性

java - 如何将 JAVA_OPTS 传递给 docker 容器中的 tomcat?