1. 程式人生 > >Jenkins+mvn+cobertura覆蓋率報告並由jenkins匯出

Jenkins+mvn+cobertura覆蓋率報告並由jenkins匯出

這東西辣雞葫蘆娃折騰了一天多,茶不思飯不想,終於能夠跑起來了,從此省去了手動部署專案的煩惱233。在這裡把踩過的一堆坑分享一下,希望能幫助到其他小夥伴。

專案配置:

mvn對專案結構有一些約束,比如約定原始碼放在src/main/java 測試程式碼放在src/test/java,如果你的專案是按照此種方式結構,那是極好的,如果不是,原始碼和測試程式碼路徑可以再pom.xml中顯式指明。

注:如果在編譯過程出現無法找到org.junit.jar,可以把junit.jar新增到jdk中解決,具體位置為:jdk/jre/lib/ext,其他所有的jar包依賴問題都可以如此解決。好處在於:配置伺服器資源時,可能會跑很多個java專案,他們有一些共同的依賴,比如junit、jdbc connector等,適當擴充套件以下jdk就不需要給每個專案單獨加依賴了。缺點在於:專案部署和具體伺服器有關,放到另外的沒擴充套件過jdk的伺服器上可能會無法執行。


在專案根目錄下建立一個pom.xml,內容為:

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!--以上是此mvn指令碼版本資訊,複製黏貼即可-->

    <!--以下為專案基本資訊,對構建過程無影響-->
    <groupId>com.calabash_boy</groupId>
    <artifactId>myapp</artifactId>
    <version>1.0.0</version>
    <!--以上為專案基本資訊,對構建過程無影響-->
    
    <!--以下為編譯原始碼+編譯測試程式碼+執行測試程式碼-->
    <build>
        <!--指定編譯的jdk版本為jdk8-->
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.0.2</version>
                <configuration>
                    <source>8</source>
                    <target>8</target>
                </configuration>
                <!--新增junit依賴-->
                <dependencies>
                    <dependency>
                        <groupId>junit</groupId>
                        <artifactId>junit</artifactId>
                        <version>4.12</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
        <!--原始碼路徑-->
        <sourceDirectory>src/main</sourceDirectory>
        <!--原始碼編譯輸出路徑-->
        <outputDirectory>web/classes/main</outputDirectory>
        <!--測試程式碼輸出路徑-->
        <testOutputDirectory>web/classes/test</testOutputDirectory>
        <!--測試程式碼路徑-->
        <testSourceDirectory>src/test</testSourceDirectory>
        <!--編譯原始碼的資原始檔,比如第三方jar包-->
        <resources>
            <resource>
                <targetPath>web/lib</targetPath>
                <directory>web/lib</directory>
            </resource>
        </resources>
        <!--編譯測試程式碼的資原始檔,比如第三方jar包-->
        <testResources>
            <testResource>
                <targetPath>web/lib</targetPath>
                <directory>web/lib</directory>
            </testResource>
        </testResources>
    </build>
    <!--以上為編譯原始碼+編譯測試程式碼+執行測試程式碼-->
    
    <!--以下配置cobertura生成測試報告+測試覆蓋率報告-->
    <profiles>
        <profile>
            
            <id>jenkins</id>
            <activation>
                <property>
                    <name>env.BUILD_NUMBER</name>
                </property>
            </activation>
            <!--上面一小段複製黏貼即可-->
            <build>
                <plugins>
                    <plugin>
                        <!-- 以下為cobertura外掛資訊,複製黏貼即可-->
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>cobertura-maven-plugin</artifactId>
                        <version>2.7</version>
                        <!-- 以上為cobertura外掛資訊-->
                        
                        <!-- 以下為jenkins匯出xml報告用,複製黏貼即可-->
                        <configuration>
                            <formats>
                                <format>xml</format>
                            </formats>
                        </configuration>
                        <executions>
                            <execution>
                                <phase>package</phase>
                                <goals>
                                    <goal>cobertura</goal>
                                </goals>
                            </execution>
                        </executions>
                        <!-- 以上為jenkins匯出xml報告用>-->
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>

jenkins配置:

1、安裝cobertura外掛,直接到系統管理-外掛管理-可選外掛中選擇cobertura下載安裝。

2、通過shell呼叫mvn命令生成cobertura測試報告,先cd到pom.xml所在目錄,然後執行mvn clean cobertura:cobertura package。我個人不推薦新手使用ANT指令碼方式,因為ANT指令碼配置cobertura有點繁瑣,而mvn好處在於你不用去了解cobertura先編譯,然後修改位元組碼生成ser,然後跑測試這麼多細節,且mvn的pom.xml比ANT的build.xml好寫很多。


3、構建後操作選擇Publish Cobertura Coverage Report,路徑選擇coverage.xml所在目錄,一般為專案根目錄/target/site/cobertura/coverage.xml



4、最終效果