我正在尝试为我的多模块项目 Dockerize Maven 构建。我有一个嵌套文件结构,其中我项目的所有模块都包含在 modules/ 目录中。作为构建的一部分,我想缓存依赖项,因此除非更新 POM 文件,否则容器不需要拉取依赖项(即 Java 更改不应每次都需要拉取依赖项)。我目前通过使用每个文件的单独 Docker 命令将每个 POM 复制到构建容器中的适当目录中来实现这一点;但是,我目前大约有 10 个模块,将来可能会添加更多。我想避免在添加模块时单独复制每个 POM。我看到 COPY 支持源文件参数的通配符语法,但根本无法使其正常工作。
COPY modules/*/pom.xml ./
Run Code Online (Sandbox Code Playgroud)
但这似乎不能正确复制。我确信有一种方法可以复制这些文件,而不必为每个文件指定一个命令。执行此操作的正确命令是什么?非常感谢您提供任何帮助!
在构建特定模块时是否需要构建所有同级模块?如果没有,我的解决方案是仅复制所需的 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
Run Code Online (Sandbox Code Playgroud)
通过从父级中删除其他模块引用,您可以构建项目,就好像它只包含所需的模块一样。
归档时间: |
|
查看次数: |
340 次 |
最近记录: |