2015-12-17 53 views
0

另一个Maven问题。我有Maven-surefire-plugin运行的TestNG测试应用程序。我创建了2个配置文件,用于转换和测试。为什么Maven运行配置文件插件即使配置文件未被激活

我正在通过'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> 

但问题是,测试运行,每次当我建立我的应用程序......如果“测试”配置文件中指定,或者不是不管。为什么?

+0

测试阶段是Maven默认构建生命周期的一部分。它始终执行,除非您明确禁用它。将此代码段放入您的制作资料中 true

回答

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

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

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

<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> 

希望它有帮助。

0

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

<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?

相关问题