Como correr Jetty: Run-War usando uma guerra definida pelas coordenadas do MAVEN?
-
20-09-2019 - |
Pergunta
Antecedentes: Estou configurando um módulo de testes funcionais em um projeto Maven. Nós usamos o Maven-jetty-plugin para teste.
Eu tenho o plug -in do jetty configurado conforme descrito aqui (Para jogar bem com o plug -in Failsafe), mas o que eu gostaria de fazer é implantar o artefato de guerra do nosso módulo principal da Web usando o Jetty (que acaba de ser instalado no repo local do Maven no momento em que o módulo de teste funcional estiver em execução ).
O plugin do cais gol da guerra tem um <webApp>
elemento que leva um caminho de string a uma guerra para implantar. Prefiro especificar a guerra para implantar usando as coordenadas do Maven definidas pelo nosso módulo da Web. Há alguma maneira de fazer isso?
Possíveis soluções alternativas:
- Seção 4.13 de "Better Builds With Maven" Descreve o uso de carga para implantar uma guerra especificada usando coordenadas Maven, mas isso é um exagero sério, já que estamos usando o cais.
- O IMO mais razoável está usando dependência: copie para copiar o artefato de guerra recém-construído e instalado para um caminho fixo no diretório de destino do módulo de testes funcionais, que posso fornecer no plug-in do jetty
<webApp>
Elemento de configuração.
Solução
O objetivo da guerra de corrida do plug-in do Jetty tem um elemento que leva um caminho para uma guerra para implantar. Prefiro especificar a guerra para implantar usando as coordenadas do Maven definidas pelo nosso módulo da Web. Há alguma maneira de fazer isso?
Este não é realmente o plug -in do Maven Jetty ser usado, o plug -in implanta a guerra do módulo atual, o que você deseja fazer não é suportado por padrão.
A Seção 4.13 de "Better Builds With Maven" descreve o uso de carga para implantar uma guerra especificada usando coordenadas maven,
Sim, a carga pode fazer isso de uma maneira limpa.
Mas isso é um exagero sério, já que estamos usando o cais.
Eu não concordo. Primeiro, o plug -in do Jetty não suporta o que você deseja fazer fora da caixa (por isso pode não ser a ferramenta certa). Segundo, exagero sério É altamente exagerado, um equívoco é realmente, especialmente porque a carga requer muito pouca configuração (zero?) Para um cais incorporado.
O IMO mais razoável está usando dependência: copie para copiar o artefato de guerra recém-construído e instalado para um caminho fixo no diretório de destino do módulo de testes funcionais
Sem ofensa, mas toda a sua pergunta parece um pouco como: Eu tenho um martelo, foi bom para uma unha, posso usá -lo para um parafuso, uma vez que pegar um motorista de fenda parece um exagero sério? Para responder a essa pergunta (que de alguma forma é o que você está dizendo), você pode usar dependency:copy
E faça tudo funcionar com o plug -in do Maven Jetty, mas isso é um hack (e como você não está fazendo nenhuma pergunta, acho que queria uma opinião sobre isso). Claro que a decisão final pertence a você :)
Apenas para o caso, eis como eu implementaria isso com 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>
E não acho que isso possa ser objetivamente qualificado como um "exagero sério".