【轉】經常使用插件和mvn test命令

自定義構建Maven項目,須要包括額外的插件或者配置已存在的插件參數。

1. maven-compiler-plugin 指定JDK版本和編碼方式

compiler插件能解決2個問題:java

第一: maven 2.1默認使用jdk 1.3來編譯,這個版本不支持註解,compiler插件能夠指定JDK版本爲1.6,解決這個問題。web

第二:windows平臺默認使用GBK編碼,若是工程編碼爲utf8,也須要在compiler插件中指出,不然按GBK編碼,也會出問題apache

      <plugins>windows

           <plugin> eclipse

              <groupId>org.apache.maven.plugins</groupId> maven

              <artifactId>maven-compiler-plugin</artifactId> 單元測試

              <configuration> 測試

                  <source>1.6</source> 編碼

                  <target>1.6</target> spa

                  <encoding>UTF8</encoding>

              </configuration> 

           </plugin>

      </plugins>

2. maven-war-plugin 打war包在web子項目中指定

<plugin>

           <groupId>org.apache.maven.plugins</groupId>

           <artifactId>maven-war-plugin</artifactId>

           <version>2.1-beta-1</version>

           <configuration>

              <attachClasses>true</attachClasses>

           </configuration>

    </plugin>

<attachClasses>true</attachClasses> 能夠把JAR文件和標準的WAR文件同時安裝到Maven倉庫中

3. 單元測試插件 maven-surefire-plugin

<plugin>

           <groupId>org.apache.maven.plugins</groupId>

           <artifactId>maven-surefire-plugin</artifactId>

           <configuration>

              <argLine>-Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=256m</argLine>

              <excludes>

                  <exclude>**/TestConstants.java</exclude>

              </excludes>

              <forkMode>always</forkMode>

           </configuration>

</plugin>

<argLine>-Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=256m</argLine>調整JVM(-Xmx1024m)和PermSize(-XX:PermSize=256m -XX:MaxPermSize=256m)內存

<excludes>

       <exclude>**/TestConstants.java</exclude>

</excludes>

運行測試腳本時不執行TestConstants.java文件

<forkMode>always</forkMode>

Maven運行測試用例時,是經過調用maven的surefire插件並fork一個子進程來執行用例的。forkmode屬性中指明是要爲每一個測試建立一個進程,仍是全部測試在同一個進程中完成。

forkMode 可設置值有 「never」, 「once」, 「always」 和 「pertest」。

pretest: 每個測試建立一個新進程,爲每一個測試建立新的JVM是單獨測試的最完全方式,但也是最慢的,不適合hudson上持續迴歸

once:在一個進程中進行全部測試。once爲默認設置,在Hudson上持續迴歸時建議使用默認設置。

always:在一個進程中並行的運行腳本,Junit4.7以上版本纔可使用,surefire的版本要在2.6以上提供這個功能,其中 threadCount執行時,指定可分配的線程數量。只和參數parallel配合使用有效。默認:5。

<forkMode>always</forkMode>

<parallel>methods</parallel>

<threadCount>4</threadCount>

 4 .Resource插件

<filters>    

       <filter>${user.home}/asssd.properties</filter>

</filters>

<resources>

       <resource>

           <directory>src/main/resources</directory>

           <filtering>true</filtering>

           <includes>

              <include>**/*</include>

           </includes>

       </resource>

       <resource>

           <directory>src/main/java</directory>

           <includes>

              <include>**.xml</include>

           </includes>

       </resource>

</resources>

運行打包命令時,將src/main/resources中的全部文件和src/main/java目錄下的全部.xml文件打到jar包中。

其中filters過濾器的做用是將全部引用文件中的${變量名稱},替換成antx.properties文件中的變量值。要使用過濾器時,首先須要設置過濾器:

<filters>    

       <filter>${user.home}/antx.properties</filter>

</filters>

而後再啓動過濾器, true須要過濾,false不須要過濾:

<filtering>true</filtering>

五、Maven經常使用命令

一、運行應用程序中的單元測試:mvn test或mvn test -Dtest=***Test, 其中「***Test」爲被測試用例的類名(不須要輸入.java)

         打開控制檯,進入測試工程所在目錄:D:\workspace-sell\sell-qatest路徑;輸入mvn test命令後,開始執行sell-qatest中的全部測試腳本,並將信息輸出到控制檯。

         若是要單獨運行一個測試類裏的用例,如 publishAuctionTest.java,則能夠運行 mvn test -Dtest=publishAuctionTest

二、清除目標目錄中的生成結果:mvn clean(清除taget文件夾中內容)

三、在本地repo中安裝jar:mvn install。運行命令後工程根目錄下生成target文件夾,文件夾內存放jar包,class文件夾等內容。本地倉庫repo中生成工程jar包目錄。

四、將工程打包:mvn package。運行命令後工程根目錄下生成target文件夾,文件夾內存放jar包,class文件夾等內容。

五、生成Eclipse項目文件:mvn eclipse:eclipse。運行命令後生成eclipse工程,項目的根目錄下產生.project、.classpath文件和target文件夾。將該工程導入到eclipse中:打開eclipse,經過file->import,導入到eclipse中。

六、清除Eclipse工程:mvn eclipse:clean。.classpath和.project文件會被刪除。

七、在運行install 或package時,測試代碼不被執行:

第一種方法:在cmd運行mvn install 或mvn package 命令後加上-Dmaven.test.skip=true 。

例如:mvn install -Dmaven.test.skip=true

第二種方法:在pom.xml文件的maven-surefire-plugin插件中添加參數:<skip>true</skip>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-surefire-plugin</artifactId>

<inherited>true</inherited>

<configuration>

<skip>true</skip>

</configuration>

</plugin>

相關文章
相關標籤/搜索