Question

Nous utilisons MySQL dans la production, et Derby pour les tests unitaires. Nos copies pom.xml version Derby de persistence.xml avant les essais, et le remplace par la version MySQL en phase de préparation-paquet:

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

Le problème est que si j'exécute la jetée mvn: exécuter exécutera la tâche de copie de fichier persistence.xml test avant la jetée de départ. Je veux qu'il soit exécuté en utilisant la version de déploiement. Comment puis-je résoudre ce problème?

Était-ce utile?

La solution

Le but de jetty:run invoque l'exécution de la phase du cycle de vie test-compile avant d'exécuter lui-même . Ainsi, les tests exécution ne changera rien.

Ce que vous devez faire est de lier l'exécution de copy-test-persistence à une phase postérieure du cycle de vie test-compile mais avant test. Et il n'y a pas de candidats douzaine, mais un seul: process-test-classes.

C'est conceptuellement peut-être pas idéal, mais il est l'option la moins pire, et il fonctionnera:

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

Autres conseils

Essayez d'ajouter les arguments -Dmaven.test.skip = true ou -DskipTests = true dans la ligne de commande . Par exemple

mvn -DskipTests=true jetty:run ...

Je ne sais pas si ce processus saute la phase-test-ressources, cependant.

En savoir plus sur les tests à sauter est disponible dans Surefire Plugin de documentation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top