Pregunta

Nosotros usamos MySQL en la producción, y Derby para las pruebas unitarias. Nuestros ejemplares pom.xml versión Derby de persistence.xml antes de las pruebas, y lo reemplaza con la versión de MySQL en la fase de preparación paquete:

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

El problema es que si ejecuto embarcadero mvn: ejecutarlo ejecutará la tarea de copia de archivos persistence.xml prueba antes de comenzar embarcadero. Quiero que se ejecuta utilizando la versión de despliegue. ¿Cómo puedo solucionar este problema?

¿Fue útil?

Solución

El objetivo jetty:run invoca la ejecución de la fase del ciclo de vida test-compile antes de la ejecución en sí . Así que saltarse las pruebas ejecución no va a cambiar nada.

Lo que hay que hacer es obligar a la ejecución copy-test-persistence a una posterior fase de ciclo de vida para test-compile pero antes de test. Y no hay docenas de candidatos, pero sólo uno: process-test-classes.

Esto es conceptualmente quizás no es ideal, pero es la opción menos peor, y 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>

Otros consejos

Trate de añadir los argumentos -Dmaven.test.skip = true o -DskipTests = true en la línea de comandos. Por ejemplo

mvn -DskipTests=true jetty:run ...

No estoy seguro si esto se salta la fase de proceso de los ensayos recursos, sin embargo.

Más información sobre las pruebas de saltar está disponible en el éxito seguro Plugin de documentación .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top