Запустите и настройте сервер WildFly и разверните приложение с помощью плагина wildfly-maven за 1 запуск maven.

Я хочу иметь способ запустить maven, чтобы он:

  • запустить экземпляр сервера WildFly в автономном режиме (wildfly:run)
  • развернуть драйвер hsqldb
  • добавить источник данных
  • развернуть приложение

Проблема в том, что:

  • wildfly:run блоки, поэтому никакие другие цели maven не могут быть выполнены
  • экземпляр сервера должен быть запущен, прежде чем его можно будет настроить или развернуть приложение (daaa)

Возможная работа, которая приходит мне на ум, это:

  • wildfly:start
  • настроить сервер и развернуть приложение
  • блокировать, пока пользователь не нажмет CTRL-C, есть ли плагин maven, который делает это?

person Adam Siemion    schedule 13.09.2014    source источник
comment
У меня точно такая же проблема. mvn wildfly: запуск не блокируется. Удалось ли вам найти решение?   -  person fansonly    schedule 05.12.2014
comment
@fansonly Нет, я придумал какой-то обходной путь, который сейчас не помню, но не окончательное решение. Если у вас есть время, я рекомендую вам предоставить новую функцию (github.com/wildfly/wildfly-maven -plugin), о котором Джеймс упомянул в своем ответе, - свойство конфигурации, позволяющее не регистрировать перехватчик выключения и оставлять процесс запущенным.   -  person Adam Siemion    schedule 05.12.2014
comment
Я позабочусь об этом, если менеджер проекта даст мне время.   -  person fansonly    schedule 06.12.2014


Ответы (3)


Вы можете использовать параметр beforeDeployment запуска goal (источник):

<plugin>
    <groupId>org.wildfly.plugins</groupId>
    <artifactId>wildfly-maven-plugin</artifactId>
    <configuration>
        <beforeDeployment>
            <commands>
                <command>data-source add --jndi-name=java:jboss/datasources/OracleDS --name=testDB --connection-url=jdbc:h2:mem:test;DB_CLOSE_DELAY=-1 --driver-name=h2 --user-name=sa --password=sa</command>
            </commands>
        </beforeDeployment>
    </configuration>
</plugin>

Если вам нужны дополнительные библиотеки для драйвера базы данных, вы можете сделать что-то подобное (источник):

module add --name=org.postgres --resources=/tmp/postgresql-9.3-1101.jdbc41.jar --dependencies=javax.api,javax.transaction.api
/subsystem=datasources/jdbc-driver=postgres:add(driver-name="postgres",driver-module-name="org.postgres",driver-class-name=org.postgresql.Driver)
person CSchulz    schedule 20.05.2015

Цель wildfly:start не будет блокироваться, и у нее есть отключение, чтобы уничтожить процесс после выхода maven. Возможно, стоит добавить свойство конфигурации, чтобы не регистрировать перехватчик выключения и оставить процесс запущенным.. ..но я ухожу от темы.

Поскольку maven запускает цели на основе фазы жизненного цикла, вы можете вызвать цель start и deploy в фазе, которая выполняется до фазы package. Цель run требует фазы package, поэтому все, что предшествует ей, должно сработать.

person James R. Perkins    schedule 15.09.2014
comment
Я пробовал это, но когда wildfly:run выполняется после wildfly:start, он пытается запустить новый экземпляр WildFly, используя те же порты, что, конечно, терпит неудачу. - person Adam Siemion; 18.09.2014

Я не совсем понимаю, каков ваш вариант использования или почему wildfly:start, за которым следует wildfly:deploy, недостаточно.

Вы проводите ручное или автоматическое тестирование?

Для интеграционного тестирования, если wildfly-maven-plugin вам не подходит, взгляните на Cargo и его поддержку Maven и WildFly.

person Harald Wellmann    schedule 13.09.2014
comment
поскольку wilfdly:start не блокируется, поэтому после завершения wildfly:start и wildfly:deploy запущенный экземпляр WildFly будет закрыт. - person Adam Siemion; 14.09.2014