即使未激活配置文件,为什么Maven会运行配置文件插件

时间:2015-12-17 12:09:21

标签: java maven

另一个Maven问题。我有通过maven-surefire-plugin运行的TestNG测试应用程序。我创建了2个配置文件,用于pdoruction和测试。

我正在通过'mvn clean install'命令构建我的应用程序。现在我的目标是仅在指定测试配置文件时运行TestNG测试。

代码:

profiles>
    <profile>
        <id>prod</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>

    <profile>
        <id>test</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.19</version>
                    <configuration>
                        <suiteXmlFiles>
                            <suiteXmlFile>${basedir}/target/test-classes/firstTest.xml</suiteXmlFile>
                        </suiteXmlFiles>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>

</profiles>

但问题是每次构建应用程序时都会运行测试...无论是否指定了'test'配置文件。为什么呢?

3 个答案:

答案 0 :(得分:2)

您可以运行mvn clean install -DskipTests或更改production个人资料定义:

 <profile>
     <id>prod</id>
     <activation>
         <activeByDefault>true</activeByDefault>
     </activation>
     <build>
         <plugins>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <version>2.19</version>
                 <configuration>
                     <skipTests>true</skipTests>
                 </configuration>
             </plugin>
         </plugins>
     </build>
 </profile>

答案 1 :(得分:1)

我认为你必须明确跳过测试。

尝试将以下配置添加到默认配置文件中。

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.19</version>
      <configuration>
        <skipTests>true</skipTests>
      </configuration>
    </plugin>
  </plugins>
</build>

希望它有所帮助。

答案 2 :(得分:1)

只有在maven配置文件“test”被激活的情况下才有运行测试的解决方案:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <skipTests>true</skipTests>
            </configuration>
        </plugin>
    </plugins>
</build>

<profiles>
    <profile>
        <id>test</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                        <skipTests>false</skipTests>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

另见How to keep Maven profiles which are activeByDefault active even if another profile gets activated?