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:

  1. 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.
  2. 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.
Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top