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

如何修改Dockerfile为IntelliJ Maven项目添加org.json依赖?

解决Maven依赖缺失的Dockerfile修改方案

方法1:多阶段构建(推荐)

这种方式会在容器内完成Maven编译打包,自动处理所有依赖,无需本地提前编译:

# 第一阶段:用Maven镜像编译打包项目
FROM maven:3.8.6-openjdk-17 AS builder
WORKDIR /app
# 复制pom.xml和项目源码
COPY pom.xml .
COPY src ./src
# 执行打包,生成包含所有依赖的可执行jar
RUN mvn clean package -DskipTests

# 第二阶段:用轻量JDK镜像运行应用
FROM openjdk:17
# 从构建阶段复制打包好的jar包
COPY --from=builder /app/target/*.jar /app/app.jar
WORKDIR /app
ENTRYPOINT ["java", "-jar", "app.jar"]

说明:

  • 第一阶段借助Maven镜像处理依赖下载和项目编译,确保所有依赖(包括org.json)都被打包进最终的jar文件
  • 第二阶段仅保留运行所需的JDK环境,镜像体积更小

方法2:本地打包后直接复制

如果已经在本地通过mvn package生成了包含依赖的jar包(通常在项目的target目录下),可以直接复制到容器中运行:

FROM openjdk:17
# 替换为你实际生成的jar文件名
COPY target/your-project-1.0-SNAPSHOT.jar /app/app.jar
WORKDIR /app
ENTRYPOINT ["java", "-jar", "app.jar"]

不推荐的手动依赖管理方式(仅作参考)

如果坚持使用原有的class文件复制方式,需要手动将依赖jar包也复制到容器,并指定classpath:

FROM openjdk:17
COPY ./out/production/Company /tmp/classes
# 需提前将org.json等依赖jar包放到本地lib目录
COPY ./lib/org.json.jar /tmp/lib
WORKDIR /tmp
# 运行时指定classpath,包含class文件目录和所有依赖jar
ENTRYPOINT ["java", "-cp", "classes:lib/*", "Main"]

内容的提问来源于stack exchange,提问作者Robert Phares

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 21:35:20