You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Docker容器内使用依赖镜像通过Maven构建Spring Boot项目?

问题描述

我有两个Spring Boot项目:core项目作为依赖被sascar项目引用。我编写了构建core镜像的Dockerfile:

FROM maven:3.3-jdk-8
 
WORKDIR /opt/ivr-engine-core
 
ADD ./engine-core/. /opt/engine-core
 
RUN ls -la /opt/engine-core
 
RUN mvn clean install

执行构建命令:

docker build . -t engine-core

随后启动容器并挂载sascar项目进入bash:

docker run -it --rm -w /app -v "$PWD/engine-sascar:/app" engine-core:latest bash

在容器内执行mvn clean package时,sascar项目无法找到core的类,报错:

[INFO] Compiling 35 source files to /app/target/classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /app/src/main/java/com/app/sascar/StepOne.java:[8,33] package com.engine.core does not exist
问题原因
  1. Dockerfile路径配置错误:Dockerfile中设置的WORKDIR为/opt/ivr-engine-core,但通过ADD命令将core项目文件放到了/opt/engine-core目录。执行mvn clean install时,当前目录是/opt/ivr-engine-core,该目录下没有core项目的pom.xml,导致mvn install并未将core项目安装到镜像内的Maven本地仓库(/root/.m2)。
  2. 依赖坐标不匹配:如果sascar项目的pom.xml中对core的依赖配置(groupId、artifactId、version)与core项目pom.xml中的定义不一致,Maven也无法找到对应的依赖。
解决方法

1. 修正Dockerfile,确保core正确安装到Maven仓库

修改Dockerfile的路径配置,让mvn install在core项目根目录执行:

FROM maven:3.3-jdk-8
 
# 将工作目录设置为core项目目录
WORKDIR /opt/engine-core
 
# 将本地core项目文件复制到容器的工作目录
ADD ./engine-core/. .
 
# 验证文件是否存在(可选)
RUN ls -la
 
# 执行安装,将core安装到容器内的Maven本地仓库
RUN mvn clean install

重新构建镜像:

docker build . -t engine-core

2. 检查sascar项目的依赖配置

打开sascar项目的pom.xml,确保依赖的坐标与core项目pom.xml完全一致。例如,如果core的pom.xml定义如下:

<groupId>com.engine</groupId>
<artifactId>core</artifactId>
<version>1.0.0-SNAPSHOT</version>

那么sascar的pom.xml中需要添加:

<dependency>
    <groupId>com.engine</groupId>
    <artifactId>core</artifactId>
    <version>1.0.0-SNAPSHOT</version>
</dependency>

3. 重新构建sascar项目

启动容器并进入后,执行:

mvn clean package

此时Maven会从容器内的/root/.m2仓库中找到core依赖,完成编译。

内容的提问来源于stack exchange,提问作者Francisco Souza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 05:30:43