2012-01-12 54 views
12

當我的pom設置爲包裝類型「pom」時,我遇到了一些運行我的單元測試的問題。起初,它說這個項目不需要目標,所以我將maven-surefire-plugin添加到我的pom.xml中,以將測試階段綁定到maven-surefire-plugin測試目標。使用maven包裝類型「pom」運行測試

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.9</version> 
      <executions> 
       <execution> 
        <phase>test</phase> 
        <goals> 
         <goal>test</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

現在,surefire插件正在執行,但它說沒有測試運行。如果我將包裝類型更改爲jar並運行mvn測試,那麼它會提取我的測試文件。

當我運行mvn test -X時,它顯示「testSourceDirectory = C:\ dev \ dsl \ src \ test \ java」,這是正確的位置。包裝類型「POM」與「罐子」的測試位置是否不同?我試圖加入

  <configuration> 
       <testSourceDirectory>src/test/java</testSourceDirectory> 
      </configuration> 

給surefire插件,但它根本沒有幫助。

+3

Pom包裝僅用於元數據項目,不是嗎?你想做什麼? – 2012-01-12 22:52:33

+1

我實際上在這種情況下 - 我有一個系統測試模塊,只是我想運行但不能生成一個罐子。但是,如果沒有實際指定除pom外的其他包裝類型,我無法運行測試。我該怎麼做(這可能值得另外一個問題)。 – whaley 2012-11-19 15:10:19

+0

@DaveNewton我想這樣做是因爲它不是Java應用程序,我想生成一個帶有數據庫腳本作爲工件的zip文件。 – user977208 2012-11-20 04:24:08

回答

10

如Dave所述,如果您使用pom包裝,它只執行以下生命週期目標。請參閱this相關的maven文檔。

  • 安裝
  • 部署

如果你需要它來運行任何其他的目標,你需要明確的指定。例如,

mvn clean compiler:testCompile surefire:test 
+0

噢謝謝你!我知道它並沒有綁定到測試階段,但它並沒有點擊我的腦海中,我需要運行編譯器:testCompile。 – user977208 2012-01-13 14:30:03

+0

還有一個問題。我想我可以這樣綁定編譯器:testCompile到測試階段,但它似乎不工作。有什麼建議麼? org.apache.maven.plugins 行家編譯-插件 2.3.2 測試編譯 testCompile user977208 2012-01-13 14:52:12

+0

沒關係,我有兩個maven-compiler-plugin部分,所以它被覆蓋 – user977208 2012-01-13 21:19:20