使用GrailsMaven插件跳过集成测试

使用GrailsMaven插件跳过集成测试,maven,grails,integration-testing,Maven,Grails,Integration Testing,我正在使用Grails2.1.0和Maven 2.1.1。当运行命令mvn clean install生成EAR文件时,Maven会毫无问题地运行单元测试,除了运行两次之外,还会运行集成测试。当进入集成测试阶段时,它抛出一个错误无法加载JDBC驱动程序类'com.ibm.db2.jcc.DB2Driver' 单元测试和集成测试在运行Grails时都会通过,如果我使用-Dmaven.test.skip=true标志构建ear,那么它构建时不会出错,生成的ear会很好地部署到服务器 我正在从1.3.

我正在使用Grails2.1.0和Maven 2.1.1。当运行命令
mvn clean install
生成EAR文件时,Maven会毫无问题地运行单元测试,除了运行两次之外,还会运行集成测试。当进入集成测试阶段时,它抛出一个错误
无法加载JDBC驱动程序类'com.ibm.db2.jcc.DB2Driver'

单元测试和集成测试在运行Grails时都会通过,如果我使用
-Dmaven.test.skip=true
标志构建ear,那么它构建时不会出错,生成的ear会很好地部署到服务器

我正在从1.3.7升级此项目,该版本在生成时未运行集成测试。它也只运行了一次单元测试,但从我读到的两次单元测试是GrailsMaven插件的一个已知部分。下面是我正在使用的pom

<properties>
    <grails.version>2.1.0</grails.version>
    <slf4j.version>1.6.6</slf4j.version>
</properties>

<dependencies>

    <dependency>
        <groupId>org.grails</groupId>
        <artifactId>grails-dependencies</artifactId>
        <version>${grails.version}</version>
        <exclusions>                
            <exclusion>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
            </exclusion>            
        </exclusions>
        <type>pom</type>
    </dependency>

    <dependency>
        <groupId>org.grails</groupId>
        <artifactId>grails-plugin-testing</artifactId>
        <version>${grails.version}</version>
        <scope>test</scope>
    </dependency>

<dependency>
    <groupId>org.grails.plugins</groupId>
    <artifactId>mail</artifactId>
    <version>1.0.1</version>
    <scope>runtime</scope>
    <type>zip</type>
</dependency>

<dependency>
    <groupId>org.grails.plugins</groupId>
    <artifactId>jquery</artifactId>
    <version>1.7.2</version>
    <scope>runtime</scope>
    <type>zip</type>
</dependency>                    

<dependency>
    <groupId>org.grails.plugins</groupId>
    <artifactId>resources</artifactId>
    <version>1.1.6</version>
    <scope>runtime</scope>
    <type>zip</type>
</dependency>                    

<dependency>
    <groupId>org.grails.plugins</groupId>
    <artifactId>webxml</artifactId>
    <version>1.4.1</version>
    <scope>runtime</scope>
    <type>zip</type>
</dependency>    

<dependency>
    <groupId>org.grails</groupId>
    <artifactId>grails-hibernate</artifactId>
    <version>${grails.version}</version>       
</dependency>

<dependency>
    <groupId>org.grails.plugins</groupId>
    <artifactId>hibernate</artifactId>
    <version>${grails.version}</version>
    <scope>compile</scope>
    <type>zip</type>
</dependency>
</dependencies>

<build>
    <pluginManagement />

    <plugins>
        <!-- Disables the Maven surefire plugin for Grails applications, as we have our own test runner -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <skip>true</skip>
            </configuration>
            <executions>
                <execution>
                    <id>surefire-it</id>
                    <phase>integration-test</phase>
                    <goals>
                        <goal>test</goal>
                    </goals>
                    <configuration>
                        <skip>false</skip>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-clean-plugin</artifactId>
            <version>2.4.1</version>
            <configuration>
                <filesets>
                    <fileset>
                        <directory>plugins</directory>
                        <includes>
                            <include>**/*</include>
                        </includes>
                        <followSymlinks>false</followSymlinks>
                    </fileset>
                </filesets>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.grails</groupId>
            <artifactId>grails-maven-plugin</artifactId>
            <version>${grails.version}</version>
            <configuration>
                <!-- Whether for Fork a JVM to run Grails commands -->
                <fork>false</fork>
            </configuration>
            <extensions>true</extensions>
            <executions>
                <execution>
                    <goals>
                        <goal>init</goal>
                        <goal>maven-clean</goal>
                        <goal>validate</goal>
                        <goal>config-directories</goal>
                        <goal>maven-compile</goal>
                        <goal>maven-test</goal>
                        <goal>maven-war</goal>
                        <goal>maven-functional-test</goal> 
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

2.1.0
1.6.6
org.grails
grails依赖项
${grails.version}
com.h2数据库
氢
聚甲醛
org.grails
grails插件测试
${grails.version}
测试
org.grails.plugins
邮件
1.0.1
运行时
拉链
org.grails.plugins
jquery
1.7.2
运行时
拉链
org.grails.plugins
资源
1.1.6
运行时
拉链
org.grails.plugins
webxml
1.4.1
运行时
拉链
org.grails
圣杯冬眠
${grails.version}
org.grails.plugins
冬眠
${grails.version}
编译
拉链
org.apache.maven.plugins
maven surefire插件
真的
当然可以
集成测试
测试
假的
org.apache.maven.plugins
maven清洁插件
2.4.1
插件
**/*
假的
org.grails
GrailsMaven插件
${grails.version}
假的
真的
初始化
马文清洁
验证
配置目录
maven编译
马文试验
马文战争
maven功能测试

我尝试过删除
maven功能测试
目标,以及整个执行部分,但无论哪种方式都遇到了相同的问题。有什么想法吗?

我尝试使用maven故障保护插件

并添加到我的pom.xml

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.10</version>
    <configuration>
      <skipITs>true</skipITs>
    </configuration>
</plugin>

org.apache.maven.plugins
maven故障保护插件
2.10
真的
但是mvn clean install仍然运行功能测试。不知道grails为什么这么固执

我真正关心的是跳过grails maven功能测试,也许对于您的情况,您可以尝试:

        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
            <excludes>
                <exclude>**/*IntegrationTest.java</exclude>
            </excludes>
        </configuration>
org.apache.maven.plugins
maven surefire插件
**/*IntegrationTest.java
如果有人偶然发现本文,最终找到了跳过grails maven功能测试的方法。它需要maven 2.2或更高版本,并将其添加到pom.xml中:

<plugin>
    <groupId>org.grails</groupId>
    <artifactId>grails-maven-plugin</artifactId>
    <version>${grails.version}</version>
    <extensions>true</extensions>
    <executions>
        <execution>
            <id>default-maven-functional-test</id>
            <phase>integration-test</phase>
            <configuration>
                <skip>true</skip>
            </configuration>
        </execution>
    </executions>
</plugin>

org.grails
GrailsMaven插件
${grails.version}
真的
默认maven功能测试
集成测试
真的