2010-06-15 4 views
4

Nous utilisons MySQL en 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 package préparer:Comment empêcher mvn jetty: exécuter depuis l'exécution de la phase de test?

<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: l'exécuter exécutera la Tester la tâche de copie du fichier persistence.xml avant de lancer la jetée. Je veux qu'il soit exécuté en utilisant la version de déploiement. Comment puis-je réparer cela?

Répondre

2

L'objectif jetty:runinvoque l'exécution de la phase de cycle de vie test-compile avant de s'exécuter. Donc, sauter des tests l'exécution ne changera rien. Ce que vous devez faire est de lier l'exécution copy-test-persistence à une phase de cycle de vie postérieure à test-compile mais avant test. Et il n'y a pas une douzaine de candidats 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> 
Questions connexes