8

No he tenido problemas al ejecutar un proyecto maven war en un servidor integrado para sus propias pruebas de integración, pero ahora necesito ejecutar múltiples guerras y probar desde un proyecto diferente.Maven despliegue múltiples guerras al servidor incorporado para pruebas de integración

Me gustaría configurar el siguiente escenario ...

que tienen dos proyectos de guerra Maven en mi espacio de trabajo local y llamadas WAR1 Guerra2. Me gustaría tener una tercera proyecto Maven, WarIntegration, que contiene las pruebas de integración sólo y hace lo siguiente:

  1. Paquetes WAR1
  2. Paquetes Guerra2
  3. Inicia un servidor incorporado
  4. Despliega las dos guerras con el mismo servidor incorporado pruebas de integración
  5. ejecuta contenidos dentro WarIntegration (lo que hará que las llamadas HTTP a WAR1 y Guerra2)
  6. Detiene servidor incorporado

¿Esto es posible? ¿Qué configuración de complemento logrará esto? ¿Qué tipo de proyecto debería ser WarIntergration (empaque)? ¿War1 y War2 deberían ser módulos en WarIntegration o dependencias? ¿Toda la configuración se puede agregar al proyecto de WarIntegration o debería distribuirse entre los proyectos?

Esto es similar a esta pregunta, excepto debemos utilizar un servidor incorporado que se inicia y se detiene por el proyecto (probablemente cuando corremos verificar) y necesitamos un proyecto separado para las pruebas de integración: 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

¿Cómo inicia/detiene su servidor incorporado? –

+1

El embalaje de war1 y war1 debe ser realizado por el proyecto en sí. Sugeriría definir solo una dependencia a los otros dos proyectos. – khmarbaise

+0

@Roy Truelove Me gustaría adjuntar el inicio y despliegues a la fase de pre integración y el cierre a la fase de integración posterior. – smp7d

Respuesta

5

I Pudo lograr esto usando el plugin cargo-maven2.

Estas son las piezas pertinentes del pom para cualquier persona que esté interesada ...

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

Cuidado, el elemento deployables es un hijo de plug-in/configuración, NO Programas/configuración/configuración.

El ejemplo anterior debería ser:

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

Espero que ayude!

Cuestiones relacionadas