2013-07-03 56 views
1

我正在使用該插件在另一個模塊的測試中附加測試。Maven 2.2.1附加測試。問題-Dmaven.test.skip = true

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-jar-plugin</artifactId> 
     <version>2.2</version> 
     <executions> 
     <execution> 
      <goals> 
      <goal>test-jar</goal> 
      </goals> 
     </execution> 
     </executions> 
    </plugin> 
    </plugins> 
    </build> 

和需要的jar模塊中:

<dependency> 
     <groupId>com.myco.app</groupId> 
     <artifactId>foo</artifactId> 
     <version>1.0-SNAPSHOT</version> 
     <type>test-jar</type> 
     <scope>test</scope> 
    </dependency> 
    </dependencies> 

它一直對我非常有用,但我發現了一個問題:當我執行「乾淨安裝-Dmaven.test.skip = true「,還有需要依賴性測試jar,並且該進程失敗

+0

您能告訴我們錯誤嗎? –

回答

5

是的,因爲-Dmaven.test.skip=true只是讓maven junit插件(surefire和failsafe)不執行 - 它阻止它們運行任何測試。

它的確如此不是阻止maven試圖「收集」所有的測試範圍的依賴關係。 maven仍然收集所有這些。

如果你想要可選的依賴關係(不管範圍如何),你應該閱讀關於maven profiles - 你可以定義一個配置文件來定義這個依賴關係,然後maven只有在激活配置文件時纔會嘗試獲取它命令行,例如)

+0

那麼,maven網站上的評論是什麼? 「如果你絕對必須的話,你也可以使用maven.test.skip屬性來跳過編譯測試,maven.test.skip受到Surefire的支持......」這個評論我認爲可以避免編譯,http:///maven.apache.org/surefire/maven-surefire-plugin/examples/skipping-test.html –

+0

...它仍然會嘗試獲取依賴關係。它只是不會對他們做任何事情。 – radai

+0

我發現了報告的問題來解決這個http://jira.codehaus.org/browse/MNG-4192 –

2

-Dmaven.skip.test-DskipTests只是跳過測試執行,它仍然編譯測試類,所以它需要測試的依賴

如果你想跳過測試類的編輯,你可以配置Maven編譯器插件要做到這一點,更有幫助的是創建單獨的構建配置文件並按需要跳過sp編譯ecifying特殊版本配置文件

<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <executions> 
       <execution> 
        <id>default-testCompile</id> 
        <phase>test-compile</phase> 
        <goals> 
         <goal>testCompile</goal> 
        </goals> 
        <configuration> 
         <skip>true</skip> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin>