8

Nie miałem problemu z uruchomieniem projektu wojny maven na wbudowanym serwerze dla własnych testów integracyjnych, ale teraz muszę uruchomić wiele wojen i przetestować z innego projektu.Maven wdraża wiele wojen do wbudowanego serwera dla testów integracyjnych

Chciałbym konfiguracji następujący scenariusz ...

Mam dwa projekty wojennych Maven w moim lokalnym roboczej nazwie wojnę1 i War2. Chciałbym mieć 3rd projekt Maven, WarIntegration, która zawiera tylko testy integracyjne i wykonuje następujące operacje:

  1. Pakiety wojnę1
  2. Pakiety War2
  3. Uruchamia wbudowany serwer
  4. wykorzystuje obie wojny się sama testy integracyjne
  5. Działa wbudowany serwer zawarte w WarIntegration (która będzie wykonywać połączenia hTTP do wojnę1 i War2)
  6. Zatrzymuje wbudowany serwer

Czy to możliwe? Jaką konfigurację wtyczki osiągniesz? Jakiego rodzaju projektem powinna być WarIntergration (opakowanie)? Czy War1 i War2 powinny być modułami w WarIntegration lub zależnościach? Czy cała konfiguracja może zostać przypisana do projektu WarIntegration, czy też musi być rozłożona na projekty?

Jest to podobne do tego pytania, z wyjątkiem musimy użyć wbudowanego serwera, który jest uruchamiany i zatrzymywany przez projekt (prawdopodobnie kiedy prowadzimy zweryfikować) i musimy oddzielny projekt dla testów integracyjnych: 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

Jak uruchamiasz/zatrzymujesz wbudowany serwer? –

+1

Opakowanie war1 i war1 powinno być wykonane przez sam projekt. Proponuję tylko zdefiniować zależność do dwóch innych projektów. – khmarbaise

+0

@Roy Truelove Chciałbym dołączyć rozruch i wdraża do fazy przed integracją i zamknięcia do fazy po integracji. – smp7d

Odpowiedz

5

I udało się to osiągnąć za pomocą wtyczki cargo-maven2.

Oto stosowne fragmenty POM dla każdego, kto jest zainteresowany ...

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

Uważaj, element pakiety wdrożeniowe jest dzieckiem wtyczki/konfiguracji, NIE plugin/Konfiguracja/konfiguracji.

Powyższy przykład powinien być:

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

nadzieję, że pomoże!

Powiązane problemy