8

組込みサーバー上で独自の統合テストを行うためにmaven warプロジェクトを実行するのに問題はありませんでしたが、今は複数の戦争と異なるプロジェクトからテストする必要があります。Mavenは統合テストのために組み込みサーバーに複数のwarを展開します

私はWar1とWar2と呼ばれる私の地元のワークスペースに2つのMavenの戦争のプロジェクトを持っている...セットアップに

を次のシナリオをしたいと思います。私は統合テストが含まれている第三Mavenプロジェクト、WarIntegrationを、持っていると思いますし、次のん:

  1. パッケージWar1
  2. War2
  3. が埋め込まれたサーバー
  4. が同じに両方の戦争をデプロイ開始
  5. パッケージ(War1とWar2へのHTTP呼び出しを行います)WarIntegration内に含まれる組み込みサーバー
  6. ラン統合テスト
  7. 停止埋め込みサーバ

これは可能ですか?これを実現するプラグインの設定は何ですか? 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のパッケージングは​​、プロジェクト自体で行う必要があります。私は他の2つのプロジェクトに依存関係を定義することを提案します。 – khmarbaise

+0

@Roy Truelove私は、スタートアップとデプロイを事前統合フェーズに、シャットダウンをポスト統合フェーズに付けたいと思います。 – 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

は気をつけて、配置可能ファイルの要素は/設定/設定をプラグインしないで、プラグイン/コンフィギュレーションの子です。

上記の例は次のようになります。助け

<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> 

願っています!

関連する問題