Отказоустойчивый плагин не будет работать на одном проекте, но будет работать на другом - почему? - PullRequest
7 голосов
/ 30 марта 2012

Это сводит меня с ума. Отказоустойчивый плагин Maven не будет работать на моем проекте. Если я запускаю mvn verify, только верный запуск. Если я наберу mvn failsafe:verify, произойдет сбой со следующей ошибкой:

[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building Simulation Experiment Server 1.0
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-failsafe-plugin:2.11:verify (default-cli) @ experiment-server ---
[INFO] Failsafe report directory: C:\IdeaProjects\experiment_server\target\failsafe-reports
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.551s
[INFO] Finished at: Fri Mar 30 11:24:58 GMT-06:00 2012
[INFO] Final Memory: 5M/15M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-failsafe-plugin:2.11:verify (default-cli) on project experiment-server: C:\IdeaProjects\experiment_server\target\failsafe-reports\failsafe-summary.xml (The system cannot find the path specified) -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

Он жалуется, что не нашел failsafe-summary.xml. Но это должно быть создано плагином. И плагин работает нормально (и создает файл failsafe-summary.xml, если я запускаю запустить замечательный пример проекта Arquillian *1008*.

Антонио Гонсалвеса

Итак, я скопировал точную информацию о плагине, которую использует Антонио, и он все равно не будет работать в моем проекте. Я смоделировал мой POM, чтобы он был точно таким же, как у него (за исключением родительского pom) - что-то идет не так, я просто не знаю, что. Почему отказоустойчивый будет работать на его проекте, а не на моем ??

Вот моя отказоустойчивая запись pom.xml, которая взята прямо у него и такая же, как на сайте отказоустойчивых пользователей):

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>${version.maven.failsafe.plugin}</version>
    <configuration>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>integration-test</goal>
                <goal>verify</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Спасибо за любую помощь, это сводит меня с ума.

ОБНОВЛЕНИЕ Хорошо, похоже, я исправил проблему cannot find failsafe-summary.xml - я изменил свой каталог с experiment_server на experiment-server. Я предполагаю, что это портит отказоустойчивость.

Но у меня все еще возникают проблемы с запуском при сбое из команды mvn verify или mvn integration-test. Обе эти команды вызывают верный, а не отказоустойчивый. Теперь я могу запустить failsafe напрямую, используя команду: mvn failsafe:integration-test, но не должен ли failsafe автоматически запускаться с mvn verify? Мой mvn help:effective-pom показывает, что есть отказоустойчивый, так что это не проблема ... Есть идеи?

Ответы [ 4 ]

12 голосов
/ 30 марта 2012

Посмотрите на отказоустойчивые документы для имен тестов failsafe ожидает по умолчанию:

<includes>
  <include>**/IT*.java</include>
  <include>**/*IT.java</include>
  <include>**/*ITCase.java</include>
</includes>

Названы ли ваши тесты в соответствии с одним из этих шаблонов? Если нет, попробуйте определить элемент <includes> в конфигурации плагина. Или измените названия тестов, чтобы они соответствовали шаблону по умолчанию.


Хорошо, теперь, когда мы проверили имена тестовых классов - обычно, когда я добавляю исполнения в конфигурацию плагина, я делаю это примерно так:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>${version.maven.failsafe.plugin}</version>
    <configuration>
    </configuration>
    <executions>
        <execution>
            <id>failsafe-integration-tests</id>
            <phase>integration-test</phase>
            <goals>
                <goal>integration-test</goal>
            </goals>
        </execution>
        <execution>
            <id>failsafe-verify</id>
            <phase>verify</phase>
            <goals>
                <goal>verify</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Это явно связывает цели плагина failsafe, которые вы хотите выполнить, с правильными фазами жизненного цикла сборки. Я полагаю, что плагин surefire по умолчанию связан с фазой жизненного цикла test (в любом случае для jar, war и ejb), но ничто не связано с integration-test или verify.

2 голосов
/ 19 ноября 2012

Здесь я поделюсь своими 2 центами. У меня была та же проблема, и решение выше не решило мою проблему.

У меня был maven-failsafe-plugin, инкапсулированный в тег pluginManagement . Я заметил, что вместо этого переместил его в тег plugins , когда увидел этот документ в схеме maven 4.0.0:

Информация о плагине по умолчанию, которая будет сделана доступной для справки проекты, полученные из этого. Эта конфигурация плагина не будет быть решенным или связанным с жизненным циклом, если на него нет ссылок. Любой местный Конфигурация для данного плагина переопределит весь плагин определение здесь.

Надеюсь, это дополнительная информация. решает больше проблем с госзакупками, как я.

1 голос
/ 29 июня 2013

Для меня это сработало только после того, как я добавил «стандартные» включения.

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <version>2.15</version>
        <configuration>
            <includes>
                <include>**/IT*.java</include>
                <include>**/*IT.java</include>
                <include>**/*ITCase.java</include>
                <include>**/IntegrationTest*.java</include>
            </includes>
        </configuration>
        <executions>
            <execution>
                <id>failsafe-integration-tests</id>
                <phase>integration-test</phase>
                <goals>
                    <goal>integration-test</goal>
                </goals>
            </execution>
            <execution>
                <id>failsafe-verify</id>
                <phase>verify</phase>
                <goals>
                    <goal>verify</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
0 голосов
/ 17 августа 2012

Если вы работаете с версией 2.12.2 плагина отказоустойчивости, это нормально.Переключиться на предыдущую версию.Кажется, 2.13 еще не доступно.

Jira link

...