2012-08-01 81 views
2

我是新來的maven,我有點麻煩纏着這個。maven跨項目集成

我有一堆集成測試捆綁爲一個項目。我希望能夠將這些測試隨意應用於任何其他項目。

如何使用POM將集成測試項目代碼導入另一個項目並在集成測試階段執行?

如果我把它作爲依賴項,並且集成測試項目的POM指定階段集成測試。原始項目的構建週期是否繼續進行直至達到集成測試,那麼依賴項目將在該階段接管?

對不起,我覺得我在這裏擊敗一匹死馬。你的迴應對於讓我瞭解正在發生的事情和我需要做的事情非常有幫助。 我的問題是,即使我的測試代碼編譯並添加爲測試的依賴項作爲範圍由於某些原因它不執行或檢測測試。 該測試被命名爲appTest,並且上面有JUnit 4.x標籤,我無法弄清楚它爲什麼不起作用。

回答

1

最好的辦法是提取的集成測試,以單獨的模塊代碼,然後你就要跑mvn install發佈二進制文件到本地資源庫建設的另一項目時可見或只是mvn compile將被要求,如果這些測試將使用在多模塊項目中模塊具有與父模塊相同的版本。 要在另一個項目或模塊中使用,應該在依賴項部分聲明測試範圍,如junit庫。

如果上面沒有合適的選擇可以嘗試與試驗分類器(文件名的後綴)製備附罐:

<build> 
    <sourceDirectory>src/main/scala</sourceDirectory> 
    <testSourceDirectory>src/test/scala</testSourceDirectory> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 
       <executions> 
        <execution> 
         <id>test-jar</id> 
         <goals> 
          <goal>test-jar</goal> 
         </goals> 
         <configuration> 
          <includes> 
           <include>com/thenewmotion/test/**/*.*</include> 
          </includes> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 

並且除了被用來測試範圍的測試罐型或測試分類應補充:

<dependency> 
    <groupId>com.thenewmotion</groupId> 
    <artifactId>msp-solveconnector</artifactId> 
    <version>${project.version}</version> 
    <type>test-jar</type> 
    <scope>test</scope> 
</dependency> 
+0

這基本上是什麼,我問。我該怎麼做,仍然在其他項目上執行集成測試? 我很欣賞快速回復 – user1569503 2012-08-01 19:19:37

+0

非常感謝我相信我現在明白了。 – user1569503 2012-08-01 19:37:22

+0

我已經嘗試了用非常簡單的入門代碼建議的所有三種方式,但測試模塊/項目中的測試不會在其他項目上運行。 sureFire每次都說沒有測試可以運行並繼續前進。 更多想法?我唯一的另一個做了一個自定義插件,如果可能的話我想避免。 – user1569503 2012-08-01 21:02:26

2

您可以發佈您的測試在分離神器配置Maven-JAR-插件和運行MVN安裝

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

後來導入從那裏你要執行的測試等項目的依賴:

<dependency> 
<groupId>project.with.tests.groupid</groupId> 
<artifactId>projectwithtestsartifatid</artifactId> 
<version>1.0</version> 
<type>test-jar</type> 
<scope>test</scope> 
</dependency> 

無論如何,萬無一失或故障保護功能的插件只尋找測試中目標/測試類文件夾,不在classpath中的jar中。有一個關於它的open issue沒有固定的版本(至少現在)。

一種解決方法是使用依賴插件解壓在目標/測試類測試類,但是這可能污染釋放:

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-dependency-plugin</artifactId> 
<executions> 
    <execution> 
    <id>resource-dependencies</id> 
    <phase>process-test-classes</phase> 
    <goals> 
    <goal>unpack-dependencies</goal> 
    </goals> 
    <configuration> 
    <includeTypes>test-jar</includeTypes> 
    <outputDirectory>${project.build.directory}/test-classes</outputDirectory> 
    </configuration> 
    </execution> 
</executions> 
</plugin>