Как предотвратить Mvn Jetty: запустить от выполнения фазы тестирования? - PullRequest
4 голосов
/ 15 июня 2010

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

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

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

Ответы [ 2 ]

5 голосов
/ 15 июня 2010

Попробуйте добавить аргументы -Dmaven.test.skip = true или -DskipTests = true в командной строке .Например,

mvn -DskipTests=true jetty:run ...

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

Подробнее о пропуске тестов доступно в документации к плагину Surefire .

2 голосов
/ 15 июня 2010

Цель 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>
...