即使多个Maven配置文件处于活动状态,它们也不会被执行

问题描述 投票:1回答:1

我使用maven配置文件来运行不同类型的测试(即单元,界面等)。当我尝试根据maven文档使用mvn clean install -P profile-id1,profileid2...从命令行一次执行多个配置文件时。但是,仅配置文件之一配置的测试会执行。这是我在POM中定义配置文件的方式

<profiles>
        <profile>
            <id>unit-tests</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <version>3.0.0-M4</version>
                        <configuration>
                            <groups>com.mypackage.UnitTest</groups>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>interface-tests</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <version>3.0.0-M4</version>
                        <configuration>
                            <groups>com.mypackage.InterfaceTest</groups>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
</profiles>

我在命令行-Pprofile1,profile2和-Pprofile1 -Pprofile2上尝试了不同的变体,但没有一个起作用。与我定义Maven surefire插件有关吗?任何帮助将不胜感激

java maven maven-surefire-plugin maven-profiles
1个回答
0
投票

您可能可以执行以下操作:

  • 删除所有个人资料
  • 仅定义一次surefire插件
  • 将每个不同的配置放入surefire插件下方的执行中
  • 每次执行将阶段设置为test
  • 将每次执行的<skip>参数设置为类似于${skip-integration-test}的内容。
  • 在POM的属性部分中定义上述属性(将它们全部设置为true)
  • 要运行执行,请在命令行中添加类似-Dskip-integration-test=false的内容。

示例大致如下:

        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>3.0.0-M4</version>
                    <execution>
                        <phase>test</phase>
                        <configuration>
                            <groups>com.mypackage.UnitTest</groups>
                            <skip>${unit-test-skip}</skip>
                        </configuration>
                    </execution>
                    <execution>
                        <phase>test</phase>
                        <configuration>
                            <groups>com.mypackage.InterfaceTest</groups>
                            <skip>${interface-test-skip}</skip>
                        </configuration>
                    </execution>
                </plugin>
            </plugins>
        </build>
        <properties>
            <unit-test-skip>true</unit-test-skip>
            <interface-test-skip>true</interface-test-skip>
        </properties>
© www.soinside.com 2019 - 2024. All rights reserved.