Как я могу привести сборку Знатока к сбою, если exec:java цель перестала работать?

Мы используем Знатока exec:java цель запустить пользовательское JAVA-приложение, которое настраивает базу данных для использования с нашими интеграционными тестами. Мы хотим использовать exec:java exec:exec смочь использовать зависимости проекта в пути к классу основного класса, который будет использоваться. Несколько раз приложение перестало работать по допустимым причинам, но сборка Знатока продолжалась, как будто ничто не пошло не так, как надо.

Есть ли любой "failonerror" аргумент типа, который может использоваться с exec:java? Я боюсь добавить system.exit() коды к выполняемому классу, поскольку я подозреваю это, уничтожат не только себя, но также и Знатока сам, из-за того, что это выполняет в Знатоке VM.

9
задан n00begon 11 March 2013 в 22:42
поделиться

2 ответа

Я только что сделал простой тест со следующей конфигурацией плагина, объявленной в POM:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.1</version>
        <executions>
          <execution>
            <id>my-exec-java</id>
            <phase>pre-integration-test</phase>
            <goals>
              <goal>java</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <mainClass>com.example.Main</mainClass>
        </configuration>
      </plugin>
      ...
    </plugins>
    ...
  </build>
</project>

И следующим классом Java:

package com.example;

public class Main {
    public static void main(String[] args) {
        throw new RuntimeException("A problem occured");
    }
}

И вот что я получаю при вызове фазы integration-test:

$ mvn clean integration-test
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building q2363055
[INFO]    task-segment: [clean, integration-test]
[INFO] ------------------------------------------------------------------------

...

[INFO] [jar:jar {execution: default-jar}]
[INFO] Building jar: /home/pascal/Projects/stackoverflow/q2363055/target/q2363055-1.0-SNAPSHOT.jar
[INFO] Preparing exec:java
[WARNING] Removing: java from forked lifecycle, to prevent recursive invocation.
[INFO] No goals needed for project - skipping
[INFO] [exec:java {execution: my-exec-java}]
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] An exception occured while executing the Java class. null

A problem occured
[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 19 seconds
[INFO] Finished at: Tue Mar 02 23:40:32 CET 2010
[INFO] Final Memory: 16M/79M
[INFO] ------------------------------------------------------------------------

Фаза integration никогда не выполняется из-за ошибки сборки.

Итак, вопрос в том, как вы обрабатываете ошибки в классе Java, который загружает вашу базу данных? Является ли выброс исключения вариантом?

13
ответ дан 4 December 2019 в 11:41
поделиться

Эта функция не предусмотрена по умолчанию, но вы можете запросить ее. на http://jira.codehaus.org/browse/MEXEC , так как это было бы простое добавление.

Если вы хотите, чтобы exec: java завершился ошибкой сборки, вызов main должен будет генерировать исключение вместо того, чтобы возвращать ненулевой код выхода.

Если это не вариант, вы все равно можете использовать exec: exec - см. http://mojo.codehaus.org/exec-maven-plugin/examples/example-exec-for -java-programs.html для описания того, как добавить зависимости проекта в путь к классам.

Другой вариант, если по какой-то причине ни один из этих вариантов не подходит, - это использование подключаемого модуля AntRun с задачей . Зависимости проекта также могут быть переданы в это.

4
ответ дан 4 December 2019 в 11:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: