启动并配置WildFly服务器,并在1个maven运行中使用wildfly-maven-plugin部署应用程序

时间:2014-09-13 09:29:22

标签: java maven wildfly

我希望有办法运行maven,以便:

  • 以独立模式(wildfly:run
  • 启动WildFly服务器实例
  • 部署hsqldb驱动程序
  • 添加数据源
  • 部署应用程序

问题在于:

  • wildfly:run阻止所以不能执行其他maven目标
  • 服务器实例必须先运行才能配置或部署应用程序(daaa)

我想到的一个可能的工作是:

  • wildfly:start
  • 配置服务器并部署应用
  • 阻止,直到用户按下CTRL-C,是否有maven插件执行此操作?

3 个答案:

答案 0 :(得分:4)

您可以使用运行goalsource)的 beforeDeployment 参数:

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

如果您需要为数据库驱动程序添加其他库,可以执行类似的操作(source):

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)

答案 1 :(得分:2)

wildfly:start目标不会阻止,并且它有一个关闭钩子来在maven退出时销毁进程。可能值得添加配置属性以不注册关闭挂钩并使进程保持运行.. ..但是我正在离开主题。

由于maven基于生命周期阶段运行目标,因此您可以在start阶段之前的阶段调用deploypackage目标。 run目标需要package阶段,因此之前的任何事情都应该有效。

答案 2 :(得分:1)

我不太了解您的用例是什么或为什么wildfly:start后面跟wildfly:deploy是不够的。

您在进行手动或自动测试吗?

对于集成测试,如果wildfly-maven-plugin不符合您的需求,请查看Cargo及其Maven和WildFly支持。