Убедитесь, что exec-maven-plugin загружается на этапе компиляции.

У нас есть проект maven, в котором мы используем несколько скриптов linux bash для различных записей в нашем java-приложении. Мы решили эту проблему с помощью exec-maven-plugin, поэтому сценарии обычно выглядят так: mvn -e -o -q exec:exec -Dexec.executable="java" -Dexec.args="...". По какой-то причине мы вынуждены использовать флаг офлайн (-o).

Мой вопрос: как мне убедиться, что exec-maven-plugin загружается на этапе компиляции? Существует риск того, что у разработчика не загружен exec-maven-plugin, а поскольку exec-maven-plugin используется с флагом maven offline, он не будет загружен, если его там нет.


person Tomas F    schedule 14.09.2012    source источник
comment
Я хотел бы контролировать, когда что-то загружать. Я думаю, что причиной, по которой мы решили использовать флаг офлайн, были раздражающие задержки из-за проверок обновлений при запуске нашего приложения (в сочетании с плохим интернет-соединением). Мы можем жить с раздражающими задержками на этапе компиляции, но не при запуске приложения.   -  person Tomas F    schedule 14.09.2012
comment
не могли бы вы указать только репозиторий интрасети и разместить там все свои вещи? Это лучшая практика maven, и у вас не будет лагов с Интернетом. Предполагая, что ваша интрасеть работает нормально.   -  person eis    schedule 14.09.2012
comment
На самом деле у нас есть такой интранет-репозиторий, и пока мы находимся в офисе, это не проблема.   -  person Tomas F    schedule 14.09.2012
comment
Итак, было бы правдоподобно, если бы разработчик (находясь в офисе) делал mvn dependency:go-offline, загружая необходимые плагины и зависимости, а затем использовал флаг офлайн, когда его нет в офисе?   -  person eis    schedule 14.09.2012
comment
Я не уверен, как это поможет мне. Поскольку exec-maven-plugin не указан в pom и используется только сценариями, dependency:go-offline не будет загружать exec-maven-plugin. В данный момент мы набираем mvn exec:help для того, чтобы его скачать, но хотелось бы, чтобы система работала "из коробки", т.е. хотелось бы, чтобы mvn compile хватило.   -  person Tomas F    schedule 14.09.2012
comment
Ах хорошо. Я не понимал, что это не будет в pom. Можно ли добавить его и использовать оттуда, что-то вроде mojo.codehaus.org/exec-maven-plugin/examples/ ?   -  person eis    schedule 14.09.2012


Ответы (1)


Благодаря комментариям @eis мне удалось с этим разобраться. Теперь помпа выглядит так:

<properties>
  <additionalJavaArgs></additionalJavaArgs>
</properties>
...
<build>
  <plugins>
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>exec-maven-plugin</artifactId>
      <version>1.2.1</version>
      <configuration>
        <executable>java</executable>
        <commandlineArgs>
          -XX:+PrintCommandLineFlags -showversion -classpath %classpath ${additionalJavaArgs}
        </commandlineArgs>
      </configuration>
    </plugin>
  </plugins>
</build>

Скрипт bash выглядит следующим образом:

ADDITIONAL_JAVA_ARGS=$*
mvn -e -o -q exec:exec -DadditionalJavaArgs="$ADDITIONAL_JAVA_ARGS"

Таким образом, пользователь скрипта может добавить основной класс, за которым следует неограниченное количество аргументов приложения.

person Community    schedule 18.09.2012