2010-02-13 14 views
6

Antecedentes: estoy configurando un módulo de pruebas funcionales en un proyecto de maven. Usamos el maven-jetty-plugin para la prueba.¿Cómo ejecutar jetty: run-war usando una guerra definida por las coordenadas maven?

Tengo el plugin jetty configurado as described here (para jugar bien con el plugin Failsafe), pero lo que me gustaría hacer es desplegar el artefacto de guerra desde nuestro módulo web principal usando jetty (que acaba de instalarse) en el repositorio maven local en el momento en que se ejecuta el módulo de prueba funcional).

El plugin de embarcadero run-war goal tiene un elemento <webApp> que lleva una ruta de cadena a una guerra para desplegar. Prefiero especificar la guerra para implementar usando las coordenadas Maven definidas por nuestro módulo web. ¿Hay alguna manera de hacer esto?

soluciones posibles:

  1. Section 4.13 of "Better Builds with Maven" describe el uso de la carga de desplegar una guerra especificados usando las coordenadas de Maven, pero eso es una exageración grave teniendo en cuenta que estamos usando embarcadero.
  2. OMI más razonable está utilizando la dependencia: copiar para copiar el artefacto de guerra recién construido e instalado a una ruta fija en el directorio de destino del módulo de pruebas funcionales, que luego puedo proporcionar en el elemento de configuración <webApp> del plugin jetty.

Respuesta

9

objetivo de ejecución de la guerra El plugin embarcadero tiene un elemento que tiene una trayectoria de cadena a una guerra de implementar. Prefiero especificar la guerra para implementar usando las coordenadas Maven definidas por nuestro módulo web. ¿Hay alguna manera de hacer esto?

Este no es realmente el plugin maven jetty que se supone que se utiliza, el plugin despliega la guerra del módulo actual, lo que desea hacer no es compatible por defecto.

Sección 4.13 de "Mejor Construye con Maven", describe el uso de la carga de desplegar una guerra especificado mediante coordenadas de Maven,

Sí, carga puede hacer esto de una manera limpia.

pero eso es una exageración seria dado que estamos usando embarcadero.

No estoy de acuerdo. En primer lugar, el plugin jetty no es compatible con lo que desea hacer de manera inmediata (por lo que puede no ser la herramienta correcta). En segundo lugar, overkill grave es muy exagerado, una idea equivocada en realidad, especialmente dado que la carga requiere muy poca configuración (¿cero?) Para un Embarcadero integrado.

más razonable OMI está utilizando la dependencia: copia para copiar el artefacto guerra justa incorporado-and-instalado para una trayectoria fija en el directorio de destino de la pruebas del módulo funcional

Sin ofender, pero sus sonidos de interrogación enteros un poco como: Tengo un martillo, estaba bien para un clavo, ¿puedo usarlo para un tornillo dado que conseguir un destornillador parece ser una exageración seria? Para responder a esta pregunta (que de alguna manera es lo que dices), puedes usar dependency:copy y hacer que todo funcione con el plugin maven jetty, pero este es un truco (y como no estás haciendo ninguna pregunta, supongo querías una opinión sobre esto). Por supuesto, la decisión final pertenece a ti :)

Por si acaso, aquí es cómo iba a aplicar esto con carga:

<dependencies> 
    <dependency> 
    <groupId>war group id</groupId> 
    <artifactId>war artifact id</artifactId> 
    <type>war</type> 
    <version>war version</version> 
    </dependency> 
    ... 
</dependencies> 
... 
<build> 
    <plugins> 
    <plugin> 
     <groupId>org.codehaus.cargo</groupId> 
     <artifactId>cargo-maven2-plugin</artifactId> 
     <configuration> 
     <!-- Container configuration --> 
     <container> 
      <containerId>jetty6x</containerId> 
      <type>embedded</type> 
     </container> 
     <!-- Configuration to use with the container or the deployer --> 
     <configuration> 
      <deployables> 
      <deployable> 
       <groupId>war group id</groupId> 
       <artifactId>war artifact id</artifactId> 
       <type>war</type> 
       <properties> 
       <context>war context</context> 
       </properties> 
      </deployable> 
      </deployables> 
     </configuration> 
     <!-- Don't wait, execute the tests after the container is started --> 
     <wait>false</wait> 
     </configuration> 
     <executions> 
     <execution> 
      <id>start-container</id> 
      <phase>pre-integration-test</phase> 
      <goals> 
      <goal>start</goal> 
      </goals> 
     </execution> 
     <execution> 
      <id>stop-container</id> 
      <phase>post-integration-test</phase> 
      <goals> 
      <goal>stop</goal> 
      </goals> 
     </execution> 
     </executions> 
    </plugin> 
    ... 
    </plugins> 
    ... 
</build> 

Y no creo que esto se puede calificar objetivamente como un " exceso excesivo ".

+0

El comentario de "sobrecarga grave" provino de mi carga inicial que solo se utilizaba junto con Geronimo, que, en ese momento, supuse que era una herramienta de implementación, no un contenedor de aplicaciones (que no había escuchado antes ayer, * encogerse de hombros *). De todos modos, definitivamente tienes razón, la carga era el camino a seguir, y la configuración del complemento que compartiste arriba era el 99% de lo que necesitaba. Gracias por la ayuda y la aclaración. – cemerick

+0

@Chas No hay problema. Me alegro de haber aclarado este punto entonces. Buena suerte. –

Cuestiones relacionadas