8

Non ho avuto alcun problema durante l'esecuzione di un progetto di guerra maven su un server embedded per i suoi test di integrazione, ma ora ho bisogno di eseguire più guerre e test da un progetto diverso.Maven distribuisce più guerre al server incorporato per i test di integrazione

vorrei impostare il seguente scenario ...

ho due progetti di guerra Maven nel mio spazio di lavoro locale chiamato war1 e War2. Mi piacerebbe avere un progetto Maven 3 °, WarIntegration, che contiene solo test di integrazione e fa il seguente:

  1. Pacchetti war1
  2. Pacchetti War2
  3. Avvia un server incorporato
  4. Distribuisce due guerre allo stesso test
  5. Corre Integration Server incorporato contenuti all'interno WarIntegration (che renderà le chiamate HTTP a war1 e War2)
  6. Arresta server integrato

È possibile? Quale setup di plugin realizzerà questo? Che tipo di progetto dovrebbe essere WarIntergration (imballaggio)? War1 e War2 dovrebbero essere moduli in WarIntegration o dipendenze? Tutta la configurazione può essere adattata al progetto WarIntegration o dovrebbe essere distribuita tra i progetti?

Questo è simile a questa domanda, ad eccezione dobbiamo utilizzare un server incorporato che viene avviato e arrestato dal progetto (probabilmente quando si corre verificare) e abbiamo bisogno di un progetto separato per il test di integrazione: 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

Come si avvia/arresta il server incorporato? –

+1

La confezione di war1 e war1 dovrebbe essere eseguita dal progetto stesso. Suggerirei di definire solo una dipendenza dagli altri due progetti. – khmarbaise

+0

@Roy Truelove Vorrei collegare l'avvio e l'implementazione alla fase di preintegrazione e lo spegnimento alla fase di post integrazione. – smp7d

risposta

5

I è stato in grado di raggiungere questo obiettivo utilizzando il plugin cargo-maven2.

Ecco le pertinenti pezzi del pom per chiunque sia interessato ...

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

Attenzione, l'elemento DEPLOYABLES è un figlio di plugin/configurazione, NON plugin/configurazione/configurazione.

L'esempio di cui sopra dovrebbe essere:

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

Speranza che aiuta!

Problemi correlati