2010-06-15 3 views
4

Мы используем MySQL в производстве и Derby для модульных тестов. фаза Наших pom.xml копия Derby версия persistence.xml до испытаний, и заменяет его с версией MySQL в подготовке-пакет:Как предотвратить mvn jetty: запустить от этапа тестирования?

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

Проблема заключается в том, что если я исполню МВНА причала: запустить он будет выполнять test persistence.xml копировать файл перед запуском причала. Я хочу, чтобы он запускался с использованием версии развертывания. Как я могу это исправить?

ответ

2

Цель jetty:run Цель вызывает выполнение этапа жизненного цикла test-compile до выполнения самого себя. Поэтому пропущенные тесты исполнение ничего не изменит.

Что вам нужно сделать, так это связать выполнение copy-test-persistence с фазой жизненного цикла, начиная с test-compile, но до test. И есть не десяток кандидатов, а только один: process-test-classes.

Это концептуально может быть, не идеально, но это наименее худший вариант, и он будет работать:

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

Попробуйте добавить аргументы -Dmaven.test.skip=true or -DskipTests=true in the command line. Например,

mvn -DskipTests=true jetty:run ... 

Не уверен, что это пропускает фазу ресурсов процесса-тестирования.

Дополнительная информация о пропущенных тестах is available in the Surefire plugin documentation.

+1

Если забыл упомянуть, что я проверил, что уже, но это не помогает. – tputkonen