Spring boot maven插件:包含测试资源

Posted

技术标签:

【中文标题】Spring boot maven插件:包含测试资源【英文标题】:Spring boot maven plugin: include test resources 【发布时间】:2019-04-25 22:39:18 【问题描述】:

我的目录结构如下:

src
|
|___ main
|
|___ test
      |
      |___resources

在 pre-integration-test 阶段运行启动目标(spring-boot:start,不同于 spring-boot:run)时,我想将来自测试资源的所有文件包含在类路径中。

我的 pom.xml 是:

            <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
                <execution>
                    <id>pre-integration-test</id>
                    <goals>
                        <goal>start</goal>
                    </goals>
                    <configuration>
                        <wait>1000</wait>
                        <maxAttempts>30</maxAttempts>
                    </configuration>
                </execution>
                <execution>
                    <id>post-integration-test</id>
                    <goals>
                        <goal>stop</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

我尝试了包括标志 addResourcesuseTestClasspath 在内的成功尝试,即使阅读文档 (https://docs.spring.io/spring-boot/docs/current/maven-plugin/start-mojo.html),我也真的无法弄清楚它们应该如何工作。

提前致谢。

【问题讨论】:

使用 Maven 配置文件并创建一个测试配置文件不是更好的主意吗?我认为这就是使用 Maven 的方式。 【参考方案1】:

这是一个有效的 Maven 配置:

<plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>2.2.2.RELEASE</version>
        <executions>
            <execution>
                <goals>
                    <goal>repackage</goal>
                </goals>
            </execution>
            <execution>
                <id>pre-integration-test</id>
                <goals>
                    <goal>start</goal>
                </goals>
                <configuration>
                    <classesDirectory>$project.build.testOutputDirectory:$project.build.outputDirectory</classesDirectory>
                    <wait>1000</wait>
                    <maxAttempts>30</maxAttempts>
                </configuration>
            </execution>
            <execution>
                <id>post-integration-test</id>
                <goals>
                    <goal>stop</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

【讨论】:

以上是关于Spring boot maven插件:包含测试资源的主要内容,如果未能解决你的问题,请参考以下文章

无法理解 Spring Boot 如何使用 maven 管理集成测试。它是不是使用故障安全插件?

Spring Boot Maven插件

使用 maven 插件设置时 Spring Boot 配置文件不活动

如何使用 Spring Boot 测试 Maven 模块项目

docker与Spring boot的集成:docker-maven-plugin使用

带有 JDK 17 的 Spring Boot 2.5+ - maven surefire 不执行现有测试