java - Dockerfile 中的打包步骤是下载依赖项,尽管前面有一个步骤来解决依赖项

标签 java maven spring-boot jar dockerfile

我的 Dockerfile:

FROM maven:3.6.1-jdk-12
WORKDIR /app

COPY pom.xml pom.xml
RUN mvn -B dependency:resolve dependency:resolve-plugins

COPY . .
RUN mvn -B package spring-boot:repackage

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","target/my-service-1.0.1.jar"]

我想在重新打包步骤之前下载所有依赖项,这样我就不需要等待下载每个代码更改的依赖项,而只需等待 pom.xml 更改。

但是这不起作用,并且步骤 mvn -B package spring-boot:repackage 始终下载包。

我的pom.xml相当长,请告诉我那里是否有任何相关信息,我会添加它。

最佳答案

我终于成功地使用这个 Dockerfile 并添加 go-offline-maven-plugin 来分割我的依赖步骤。 .

FROM maven:3.6.1-jdk-12
WORKDIR /app

COPY pom.xml pom.xml
RUN mvn de.qaware.maven:go-offline-maven-plugin:resolve-dependencies

RUN find /root/.m2 -type f -name '_*.repositories' -delete

COPY . .
RUN mvn -o package spring-boot:repackage

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","target/my-service-1.0.1.jar"]

关于java - Dockerfile 中的打包步骤是下载依赖项,尽管前面有一个步骤来解决依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57942534/

相关文章:

java - @AttributeOverride 是什么意思?

带有 List 作为属性值的 java hashmap

java - 设置属性和获取属性 servlet 到 jsp

java - protobuf生成代码导致的Eclipse构建循环(与Maven Project Builder相关)

java - 为什么快速 java 文档的悬停功能不起作用?

java - gcloud : Default Application Credentials in appengine for Cloud Storage (java)

java - Spring boot json简单导入失败

java - Spring LDAP 错误代码 32 - 没有这样的对象];剩余名称 '/' "

java - Android 如何隐藏我的 ListView ?

java - 如何在非 spring boot 应用程序中设置 prometheus 端点