相关疑难解决方法(0)

Maven docker缓存依赖项

我正在尝试使用docker自动化maven构建.我想要构建的项目花了将近20分钟来下载所有依赖项,所以我尝试构建一个可以缓存这些依赖项的docker镜像,但它似乎并没有保存它.我的Dockerfile是

FROM maven:alpine
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
ADD pom.xml /usr/src/app
RUN mvn dependency:go-offline
Run Code Online (Sandbox Code Playgroud)

图像构建,它确实下载了所有内容.但是,生成的图像与基本maven:alpine图像的大小相同,因此它似乎没有缓存图像中的依赖项.当我尝试使用图像时,mvn compile它会经历整整20分钟的重新下载所有内容.

是否可以构建一个缓存我的依赖项的maven图像,这样每次我使用图像执行构建时都不必下载它们?

我正在运行以下命令:

docker build -t my-maven .

docker run -it --rm --name my-maven-project -v "$PWD":/usr/src/mymaven -w /usr/src/mymaven my-maven mvn compile
Run Code Online (Sandbox Code Playgroud)

我的理解是,RUN在docker构建过程中的任何内容都会成为生成的图像的一部分.

java maven docker dockerfile

28
推荐指数
7
解决办法
2万
查看次数

下载 Maven 测试的所有依赖项

我正在使用以下内容的 Docker 容器中运行测试Dockerfile

FROM maven:3.5.3-jdk-8
ENV APP_DIR=/app
RUN mkdir -p $APP_DIR
WORKDIR $APP_DIR
COPY pom.xml .
RUN mvn -B dependency:resolve -Dclassifier=test
COPY . $APP_DIR
RUN mvn -B test-compile compile
ENTRYPOINT ["mvn", "test"]
Run Code Online (Sandbox Code Playgroud)

它确实在构建过程中下载了一些依赖项。问题是mvn test在 Docker 容器中运行时,它会下载一些与 Surefire 插件相关的依赖项。在构建过程中可以使用什么 Maven 命令来下载它们?该项目只是一个使用向导创建的基本应用程序,其中包含以下内容pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>my-app</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>
Run Code Online (Sandbox Code Playgroud)

maven docker

7
推荐指数
1
解决办法
1663
查看次数

标签 统计

docker ×2

maven ×2

dockerfile ×1

java ×1