Maven跳过测试

Maven跳过测试

参考

http://maven.apache.org/plugins/maven-resources-plugin/testResources-mojo.html

http://maven.apache.org/plugins/maven-compiler-plugin/testCompile-mojo.html

http://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html

boolean - Set this to "true" to bypass unit tests entirely. Its use is NOT RECOMMENDED, especially if you enable it using the "maven.test.skip" property, because maven.test.skip disables both running the tests and compiling the tests. Consider using the skipTests parameter instead. Default value is: false. User property is: maven.test.skip.
boolean 2.4 Set this to "true" to skip running tests, but still compile them. Its use is NOT RECOMMENDED, but quite convenient on occasion. Failsafe plugin deprecated the parameter skipTests and the parameter will be removed in Failsafe 3.0.0 as it is a source of conflicts between Failsafe and Surefire plugin. Default value is: false. User property is: skipTests.

环境

E:mozqdemo_projectshiro>mvn -v
Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-05T03:00:29+08:00)
Maven home: D:	oolsmavenapache-maven-3.6.1in..
Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: D:	oolsjdkjre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

案例一 跳过运行测试和编译测试

配置

<maven.test.skip>true</maven.test.skip> 跳过运行测试,测试资源,测试代码编译

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.1.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<!-- 
    这个属性被3个插件使用,跳过testResources,testCompile,test。不处理测试,会快一点。
    maven-resources-plugin:3.1.0:testResources
    maven-compiler-plugin:3.8.1:testCompile
    maven-surefire-plugin:2.22.2:test
 -->
    <maven.test.skip>true</maven.test.skip>
</properties>
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

运行结果

[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ http_01 ---
[INFO] Not copying test resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ http_01 ---
[INFO] Not compiling test sources
[INFO] 
[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ http_01 ---
[INFO] Tests are skipped.

案例二 只跳过运行测试

配置

<skipTests>true</skipTests> 只跳过运行测试,不跳过测试资源和测试代码编译。

<properties>
    <skipTests>true</skipTests>
    <!--<maven.test.skip>true</maven.test.skip>-->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>6</maven.compiler.source>
    <maven.compiler.target>6</maven.compiler.target>
    <spring.version>4.3.2.RELEASE</spring.version>
    <mybatis.version>3.2.6</mybatis.version>
</properties>
<build>
    <!-- 资源文件 -->
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes>
        </resource>
    </resources>


    <!-- 插件jetty tomcat -->
    <plugins>
        <!-- 配置jetty运行方式 -->
        <plugin>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>9.3.0.M2</version>
            <configuration>
                <webAppConfig>
                    <contextPath>/xinhekqsys</contextPath>
                </webAppConfig>
                <httpConnector>
                    <port>8081</port>
                    <idleTimeout>10000</idleTimeout>
                </httpConnector>
            </configuration>
        </plugin>

        <!-- maven项目在tomcat下运行的配制文件 -->
        <!-- 配置tomcat运行方式 -->
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <!-- 注意tomcat7此处的url -->
                <url>http://localhost:8080/manager/text</url>
                <!-- 此处的名字必须和setting.xml中配置的ID一致 -->
                <server>tomcat</server>
                <!-- 此处的名字是项目发布的工程名 -->
                <path>/xinhekqsys</path>
            </configuration>
        </plugin>
        <!-- <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> 
    <version>2.4</version> <configuration> <webResources> <resource> <directory>src/main/webapp/WEB-INF</directory> 
    </resource> </webResources> </configuration> </plugin> -->

        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <!-- <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> 
    <version>2.4</version> <configuration> <webResources> <resource> <directory>src/main/webapp/WEB-INF</directory> 
    <directory>src/main/webapp</directory> </resource> </webResources> </configuration> 
    </plugin> -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.6.0</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <encoding>${project.build.sourceEncoding}</encoding>
                <compilerArguments>
                    <verbose /> <bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar</bootclasspath>
                </compilerArguments>
            </configuration>
        </plugin>

    </plugins>
    <!-- 最终项目打包包名 -->
    <finalName>handordering</finalName>
</build>

运行结果

<skipTests>true</skipTests>
# 没有跳过测试资源 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ handordering ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory E:mozq2 projecthandorderingsrc	est
esources
[INFO] 
# 没有跳过测试代码编译
[INFO] --- maven-compiler-plugin:3.6.0:testCompile (default-testCompile) @ handordering ---
[INFO] No sources to compile
[INFO] 
# 跳过了运行测试
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ handordering ---
[INFO] Tests are skipped.
<maven.test.skip>true</maven.test.skip>
# 跳过了测试资源 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ handordering ---
[INFO] Not copying test resources
[INFO] 
# 跳过了测试代码编译
[INFO] --- maven-compiler-plugin:3.6.0:testCompile (default-testCompile) @ handordering ---
[INFO] Not compiling test sources
[INFO] No sources to compile
[INFO] 
# 跳过了运行测试
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ handordering ---
[INFO] Tests are skipped.

案例三 插件中配置跳过

插件和用户属性中同时对是否跳过测试进行配置,会以插件中为准。但是当跳过了测试资源和测试代码编译,又设置不跳过运行测试没有意义,因为此时不会生成测试代码。

配置

<properties>
    <!-- 配置了跳过测试用户属性 -->
    <maven.test.skip>true</maven.test.skip>
</properties>
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <!-- 插件中配置不跳过运行测试,以插件中配置为准。
				当跳过了测试资源和测试代码编译,又设置不跳过运行测试没有意义,因为此时不会有测试代码来运行。
			-->
            <configuration>
                <skip>false</skip>
            </configuration>
        </plugin>
    </plugins>
</build>

运行结果

# 跳过了测试资源
[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ http_01 ---
[INFO] Not copying test resources
# 跳过了测试代码编译
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ http_01 ---
[INFO] Not compiling test sources
# 没有跳过运行测试,但是因为没有编译的测试代码,打印了没有测试需要运行。
[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ http_01 ---
[INFO] No tests to run.
原文地址:https://www.cnblogs.com/mozq/p/12028198.html