You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Maven Deploy阶段自动运行全量测试而非仅快速测试?

自动切换Maven Surefire测试组配置的方案

你可以通过以下几种方式实现根据Maven命令自动切换测试组,不用手动输入参数:

方法1:利用Maven Profiles简化命令

定义两个Profile,默认激活仅跑快速测试的配置,执行deploy时激活全量测试的Profile:

<profiles>
    <!-- 默认激活,只跑fast测试 -->
    <profile>
        <id>fast-tests</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                        <groups>fast</groups>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>

    <!-- 执行deploy时激活,跑所有测试 -->
    <profile>
        <id>full-tests</id>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                        <groups>fast|slow</groups>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

之后执行deploy时只需加个短参数:mvn clean deploy -Pfull-tests,比手动输-Dgroups="fast|slow"简单很多,不容易出错。

方法2:完全自动切换(无需额外参数)

通过maven-antrun-plugin检查命令行内容,自动设置测试组属性,实现完全自动切换:

<build>
    <plugins>
        <!-- 初始化阶段判断命令行是否包含deploy,设置测试组属性 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
                <execution>
                    <phase>initialize</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                    <configuration>
                        <target>
                            <!-- 默认跑fast测试 -->
                            <property name="test.groups" value="fast"/>
                            <!-- 如果命令行里有deploy,切换到全量测试 -->
                            <condition property="test.groups" value="fast|slow">
                                <contains string="${maven.command.line}" substring="deploy"/>
                            </condition>
                        </target>
                    </configuration>
                </execution>
            </executions>
        </plugin>

        <!-- 引用动态设置的测试组属性 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <groups>${test.groups}</groups>
            </configuration>
        </plugin>
    </plugins>
</build>

这样执行mvn clean install时自动跑fast测试,执行mvn clean deploy时自动跑fast+slow测试,完全不用额外加参数,彻底避免手动输入错误。

方法3:通过阶段绑定避免重复测试

如果担心执行deploy时重复跑测试,可以结合Profile和阶段绑定,跳过默认test阶段,在deploy前只跑一次全量测试:

<profiles>
    <profile>
        <id>deploy-full-tests</id>
        <activation>
            <activeByDefault>false</activeByDefault>
            <!-- 当deploy不跳过时激活 -->
            <property>
                <name>maven.deploy.skip</name>
                <value>!true</value>
            </property>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <!-- 跳过默认的test阶段 -->
                    <configuration>
                        <skip>true</skip>
                    </configuration>
                    <!-- 在deploy前执行全量测试 -->
                    <executions>
                        <execution>
                            <id>full-tests</id>
                            <phase>pre-deploy</phase>
                            <goals>
                                <goal>test</goal>
                            </goals>
                            <configuration>
                                <skip>false</skip>
                                <groups>fast|slow</groups>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

<build>
    <plugins>
        <!-- 默认配置,跑fast测试 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <groups>fast</groups>
            </configuration>
        </plugin>
    </plugins>
</build>

这个方案适合测试耗时较长的场景,避免重复执行浪费时间。

内容的提问来源于stack exchange,提问作者morgwai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 11:17:10