Pergunta

Usamos o MySQL na produção e o Derby para testes de unidade. Nossa versão do POM.XML copia o Derby da persistence.xml antes dos testes e o substitui pela versão MySQL na fase de preparação:

 <plugin>
  <artifactId>maven-antrun-plugin</artifactId>
  <version>1.3</version>
  <executions>
   <execution>
    <id>copy-test-persistence</id>
    <phase>process-test-resources</phase>
    <configuration>
     <tasks>
      <!--replace the "proper" persistence.xml with the "test" version-->
      <copy
       file="${project.build.testOutputDirectory}/META-INF/persistence.xml.test"
       tofile="${project.build.outputDirectory}/META-INF/persistence.xml"
       overwrite="true" verbose="true" failonerror="true" />
     </tasks>
    </configuration>
    <goals>
     <goal>run</goal>
    </goals>
   </execution>
   <execution>
    <id>restore-persistence</id>
    <phase>prepare-package</phase>
    <configuration>
     <tasks>
      <!--restore the "proper" persistence.xml-->
      <copy
       file="${project.build.outputDirectory}/META-INF/persistence.xml.production"
       tofile="${project.build.outputDirectory}/META-INF/persistence.xml"
       overwrite="true" verbose="true" failonerror="true" />
     </tasks>
    </configuration>
    <goals>
     <goal>run</goal>
    </goals>
   </execution>
  </executions>
 </plugin>

O problema é que, se eu executar o MVN Jetty: execute, ele executará a tarefa de cópia do arquivo de teste.xml antes de iniciar o jetty. Eu quero que seja executado usando a versão de implantação. Como posso consertar isso?

Foi útil?

Solução

o jetty:run meta invoca a execução da fase do ciclo de vida test-compile Antes de se executar. Então, pulando os testes execução não vai mudar nada.

O que você precisa fazer é vincular o copy-test-persistence execução em uma fase de ciclo de vida posterior a test-compile mas antes de test. E não há dúzia de candidatos, mas apenas um: process-test-classes.

Isso é conceitualmente talvez não seja o ideal, mas é a opção menos pior, e funcionará:

 <plugin>
  <artifactId>maven-antrun-plugin</artifactId>
  <version>1.3</version>
  <executions>
   <execution>
    <id>copy-test-persistence</id>
    <phase>process-test-classes</phase>
    <configuration>
     <tasks>
      <!--replace the "proper" persistence.xml with the "test" version-->
      <copy
       file="${project.build.testOutputDirectory}/META-INF/persistence.xml.test"
       tofile="${project.build.outputDirectory}/META-INF/persistence.xml"
       overwrite="true" verbose="true" failonerror="true" />
     </tasks>
    </configuration>
    <goals>
     <goal>run</goal>
    </goals>
   </execution>
   ...
  </executions>
 </plugin>

Outras dicas

Tente adicionar os argumentos -Dmaven.test.skip = true ou -dskiptests = true na linha de comando. Por exemplo

mvn -DskipTests=true jetty:run ...

Não tenho certeza se isso ignora a fase de recursos do processo de teste.

Mais informações sobre os testes de pular está disponível na documentação do plug -in SureFire.

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