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

命令行指定Cucumber标签跳过测试,Maven提示需指定有效目标

解决Cucumber命令行跳过指定标签及Maven构建错误

问题描述

需要通过命令行执行Cucumber测试时跳过指定标签,尝试多种方法后,执行Maven命令出现构建失败错误,询问是否需要额外配置Cucumber以支持-Dcucumber.options参数。

错误信息

XX@DESKTOP-R87G978 MINGW64 ~/Downloads/sample/task (main)
$ mvn -Dcucumber.options="--tags '@smoke'"
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.367 s
[INFO] Finished at: 2022-11-06T13:25:53Z
[INFO] ------------------------------------------------------------------------
[ERROR] No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-clean, clean, post-clean, pre-site, site, post-site, site-deploy. -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/NoGoalSpecifiedException

现有pom.xml构建配置

<build>
    <testSourceDirectory>${project.basedir}/src/test/java/com/example/demo</testSourceDirectory>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>3.0.0-M7</version>
            <configuration>
                <includes>
                    <include>**/*Test*.java</include>
                </includes>
            </configuration>
        </plugin>
        <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>${jacoco.version}</version>
        <executions>
            <execution>
                <id>jacoco-initialize</id>
                <goals>
                    <goal>prepare-agent</goal>
                </goals>
            </execution>
            <execution>
                <id>jacoco-site</id>
                <phase>package</phase>
                <goals>
                    <goal>report</goal>
                </goals>
            </execution>
        </executions>
        </plugin>
    </plugins>
</build>

<profiles>
    <profile>
        <id>production</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>com.vaadin</groupId>
                    <artifactId>vaadin-maven-plugin</artifactId>
                    <version>${vaadin.version}</version>
                    <executions>
                        <execution>
                            <id>frontend</id>
                            <phase>compile</phase>
                            <goals>
                                <goal>prepare-frontend</goal>
                                <goal>build-frontend</goal>
                            </goals>
                            <configuration>
                                <productionMode>true</productionMode>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>

解决方案

1. 修正Maven命令(核心问题)

错误提示明确是未指定构建目标,原命令仅传递了Cucumber参数,但未告知Maven需执行测试阶段。正确命令需添加test生命周期阶段:

  • 跳过指定标签(以@smoke为例):
    mvn test -Dcucumber.options="--tags 'not @smoke'"
    
  • 仅运行指定标签:
    mvn test -Dcucumber.options="--tags '@smoke'"
    

2. 适配高版本Cucumber(推荐)

若使用Cucumber 6及以上版本,官方推荐使用更简洁的-Dcucumber.tags参数替代-Dcucumber.options:

mvn test -Dcucumber.tags="not @smoke"

3. 确认测试类识别配置

pom.xml中已配置maven-surefire-plugin,其includes规则为**/*Test*.java,需确保Cucumber测试运行类(如CucumberTestRunner.java)符合该命名规则;若不符合,需调整include路径,例如:

<include>**/CucumberTestRunner.java</include>

4. 验证效果

执行命令后,查看控制台输出,确认带目标标签的测试是否被正确跳过或执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:55:20