8

我已經運行了自己的集成測試嵌入式服務器上的行家戰項目沒有問題,但現在我需要從不同的項目運行多個戰爭和測試。Maven的部署多個戰爭到嵌入式服務器集成測試

我想設置以下情形......

我有一個名爲WAR1和WAR2在我的本地工作區2個Maven的戰爭計劃。我想有一個3 Maven項目,WarIntegration,僅包含集成測試並執行以下操作:

  1. 包WAR1
  2. 包WAR2
  3. 啓動嵌入式服務器
  4. 部署兩場戰爭到同嵌入式服務器
  5. 奔跑集成測試包含在WarIntegration(這將使得HTTP調用WAR1和WAR2)
  6. 停止嵌入式服務器

這可能嗎?什麼插件安裝程序將實現這一目標? WarIntergration應該是什麼樣的項目(包裝)? War1和War2應該是WarIntegration還是依賴項中的模塊?所有配置是否都可以用於WarIntegration項目,還是必須分散到各個項目中?

這類似於這個問題,但我們必須使用由項目(可能是當我們運行驗證)啓動和停止的嵌入式服務器,我們需要集成測試一個單獨的項目: I have a multi-module Maven 2 POM that has two WARs, how can I configure it to deploy both wars prior to running tests?

+0

你是如何開始/停止您的嵌入式服務器? –

+1

war1和war1的包裝應由項目本身完成。我建議只定義對另外兩個項目的依賴關係。 – khmarbaise

+0

@Roy真愛我要附加啓動和部署到預整合階段和關機後整合階段。 – smp7d

回答

5

我能夠使用cargo-maven2-plugin實現這一點。

這裏是POM的人誰是有興趣的相關作品...

... 
<groupId>com.test</groupId> 
<artifactId>webapp-integration</artifactId> 
<packaging>jar</packaging> 
<version>1.0-SNAPSHOT</version> 
... 
<dependencies> 
     ... 
     <dependency> 
      <artifactId>webapp1</artifactId> 
      <groupId>com.test</groupId> 
      <version>1.0</version> 
      <type>war</type> 
     </dependency> 
     <dependency> 
      <groupId>webapp2</groupId> 
      <artifactId>com.test</artifactId> 
      <version>1.0-SNAPSHOT</version> 
      <type>war</type> 
     </dependency> 
    </dependencies> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.codehaus.cargo</groupId> 
       <artifactId>cargo-maven2-plugin</artifactId> 
       <version>1.2.2</version> 
       <configuration> 
        <container> 
         <containerId>jetty6x</containerId> 
         <type>embedded</type> 
        </container> 
        <configuration> 
         <type>standalone</type> 
         <properties> 
          <cargo.servlet.port>8085</cargo.servlet.port> 
         </properties> 
         <deployables> 
          <deployable> 
           <artifactId>webapp1</artifactId> 
           <groupId>com.test</groupId> 
           <type>war</type> 
           <pingURL>http://localhost:8085/testapp/</pingURL> 
           <properties> 
            <context>testapp</context> 
           </properties> 
          </deployable> 
          <deployable> 
           <artifactId>webapp2</artifactId> 
           <groupId>com.test</groupId> 
           <type>war</type> 
           <pingURL>http://localhost:8085/testapp2/</pingURL> 
           <properties> 
            <context>testapp2</context> 
           </properties> 
          </deployable> 
         </deployables> 
        </configuration> 
       </configuration> 
       <executions> 
        <execution> 
         <id>start-server</id> 
         <phase>pre-integration-test</phase> 
         <goals> 
          <goal>start</goal> 
         </goals> 
        </execution> 
        <execution> 
         <id>stop-server</id> 
         <phase>post-integration-test</phase> 
         <goals> 
          <goal>stop</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <artifactId>maven-failsafe-plugin</artifactId> 
       <version>2.12</version> 
       <dependencies> 
        <dependency> 
         <groupId>org.apache.maven.surefire</groupId> 
         <artifactId>surefire-junit47</artifactId> 
         <version>2.12</version> 
        </dependency> 
       </dependencies> 
       <configuration> 
        <groups>com.test.integration.IntegrationTestMarker</groups> 
       </configuration> 
       <executions> 
        <execution> 
         <goals> 
          <goal>integration-test</goal> 
         </goals> 
         <configuration> 
          <includes> 
           <include>**/*.class</include> 
          </includes> 
          <skipTests>false</skipTests> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
2

當心,該DEPLOYABLES元素是插件/配置的孩子,而不是插件/配置/配置。

上面的例子應該是:

<plugins> 
     <plugin> 
      <groupId>org.codehaus.cargo</groupId> 
      <artifactId>cargo-maven2-plugin</artifactId> 
      <version>1.2.2</version> 
      <configuration> 
       <container>...</container> 
       <configuration> 
        <type>standalone</type> 
        <properties> 
         <cargo.servlet.port>8085</cargo.servlet.port> 
        </properties> 
       </configuration> 
       <deployables> 
        <deployable> 
          <artifactId>webapp1</artifactId> 
          <groupId>com.test</groupId> 
          <type>war</type> 
          <pingURL>http://localhost:8085/testapp/</pingURL> 
          <properties> 
           <context>testapp</context> 
          </properties> 
         </deployable> 
         <deployable> 
          <artifactId>webapp2</artifactId> 
          <groupId>com.test</groupId> 
          <type>war</type> 
          <pingURL>http://localhost:8085/testapp2/</pingURL> 
          <properties> 
           <context>testapp2</context> 
          </properties> 
         </deployable> 
       </deployables> 
      </configuration> 
     </plugin> 
</plugins> 

希望幫助!