下载 Maven 测试的所有依赖项
Posted
技术标签:
【中文标题】下载 Maven 测试的所有依赖项【英文标题】:Downloading all dependencies for Maven test 【发布时间】:2018-08-29 23:05:21 【问题描述】:我正在使用以下 Dockerfile
的 Docker 容器中运行测试:
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"]
它会在构建过程中下载一些依赖项。问题是当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>
【问题讨论】:
相关问题:***.com/questions/47969389/… 我遇到了同样的问题,“相关问题”似乎没有解决它。 @PhilNinan:你们最后是怎么解决的? 我没有让这个完全正常工作。但您可以从容器创建 docker 映像。这将是一个手动过程来创建映像,运行命令以下载所有依赖项,然后从现在具有所有依赖项的容器创建另一个映像。 【参考方案1】:这里有一个简单的建议:不要这样做
RUN mvn -B dependency:resolve -Dclassifier=test
你可以这样做
RUN mvn -B test
因为此时没有将源文件或测试文件添加到容器中,所以不会执行实际测试,但会下载大部分所需的 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
也许这还不错。
【讨论】:
以上是关于下载 Maven 测试的所有依赖项的主要内容,如果未能解决你的问题,请参考以下文章