下载 maven 库以在 docker img 内部编译时重用它们
Download maven library to reuse them when compile inside docker img
我有一个 springbot 应用程序。我想要做的是创建一个包含所有库的 docker 图像,然后在我的管道中调用它来执行编译,而无需每次都下载所有库。
我正在使用 Azure devops 和我的 Dockerfile 作为图像,它应该包含所有库并执行编译是这样的:
FROM maven:3.8.4-openjdk-11-slim
WORKDIR /usr/src/app
COPY pom.xml /usr/src/app
RUN mvn dependency:go-offline -B
我将 pom.xml 与所有库一起复制,实际上当我 运行 它时,我可以看到正确下载的所有内容。
然后在我的管道中我有这个:
FROM myrepository.onazure.io/docker-compile-java:latest AS build-env <-- this is the image create above
WORKDIR /usr/src/app
COPY . /usr/src/app
RUN mvn package -Dmaven.test.skip
# Build runtime image
FROM myrepository.onazure.io/docker-runtime-java:11
COPY --from=build-env /usr/src/app/target/*.jar /opt/app.jar
ENV PORT 9090
EXPOSE $PORT
CMD [ "sh", "-c", "java -jar /opt/app.jar --server.port=${PORT}" ]
管道工作正常,但我可以在 运行 mvn package -Dmaven.test.skip 期间看到库已再次下载。
尝试mvn package --offline ...
。该标志告诉 Maven 不要在外部解析任何依赖关系,只使用本地存储库。
有关详细信息,请参阅 How can I get Maven to stop attempting to check for updates for artifacts from a certain group from maven-central-repo?。
我有一个 springbot 应用程序。我想要做的是创建一个包含所有库的 docker 图像,然后在我的管道中调用它来执行编译,而无需每次都下载所有库。 我正在使用 Azure devops 和我的 Dockerfile 作为图像,它应该包含所有库并执行编译是这样的:
FROM maven:3.8.4-openjdk-11-slim
WORKDIR /usr/src/app
COPY pom.xml /usr/src/app
RUN mvn dependency:go-offline -B
我将 pom.xml 与所有库一起复制,实际上当我 运行 它时,我可以看到正确下载的所有内容。
然后在我的管道中我有这个:
FROM myrepository.onazure.io/docker-compile-java:latest AS build-env <-- this is the image create above
WORKDIR /usr/src/app
COPY . /usr/src/app
RUN mvn package -Dmaven.test.skip
# Build runtime image
FROM myrepository.onazure.io/docker-runtime-java:11
COPY --from=build-env /usr/src/app/target/*.jar /opt/app.jar
ENV PORT 9090
EXPOSE $PORT
CMD [ "sh", "-c", "java -jar /opt/app.jar --server.port=${PORT}" ]
管道工作正常,但我可以在 运行 mvn package -Dmaven.test.skip 期间看到库已再次下载。
尝试mvn package --offline ...
。该标志告诉 Maven 不要在外部解析任何依赖关系,只使用本地存储库。
有关详细信息,请参阅 How can I get Maven to stop attempting to check for updates for artifacts from a certain group from maven-central-repo?。