我正在使用以下内容的 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)
这是一个简单的建议:而不是这样做
RUN mvn -B dependency:resolve -Dclassifier=test
Run Code Online (Sandbox Code Playgroud)
你可以简单地做
RUN mvn -B test
Run Code Online (Sandbox Code Playgroud)
由于此时尚未将源或测试文件添加到容器中,因此不会执行实际测试,但会下载大部分所需的 Surefire 依赖项。注意:大多数,不是全部。
当我使用提到的 JUnit 3 依赖项对此进行测试时,下载的依赖项数量mvn test从 22 个减少到 3 个:
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-junit3/2.12.4/surefire-junit3-2.12.4.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-providers/2.12.4/surefire-providers-2.12.4.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-junit3/2.12.4/surefire-junit3-2.12.4.jar
Run Code Online (Sandbox Code Playgroud)
也许这并没有那么糟糕。
| 归档时间: |
|
| 查看次数: |
1663 次 |
| 最近记录: |