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

Java 启动并配置WildFly服务器,并在1个maven运行中使用WildFly maven插件部署应用程序,java,maven,wildfly,Java,Maven,Wildfly,我想找到一种运行maven的方法,以便它能够: 以独立模式启动WildFly服务器实例(WildFly:run) 部署hsqldb驱动程序 添加数据源 部署应用程序 问题在于: wildfly:run块,这样就不会执行其他maven目标 必须先运行服务器实例,然后才能对其进行配置或部署应用程序(daaa) 我想到的一个可能的解决办法是: wildfly:start 配置服务器并部署应用程序 直到用户按下CTRL-C,是否有一个maven插件可以做到这一点 我不太明白您的用例是什么,或者

我想找到一种运行maven的方法,以便它能够:

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

  • wildfly:run
    块,这样就不会执行其他maven目标
  • 必须先运行服务器实例,然后才能对其进行配置或部署应用程序(daaa)
我想到的一个可能的解决办法是:

  • wildfly:start
  • 配置服务器并部署应用程序
  • 直到用户按下CTRL-C,是否有一个maven插件可以做到这一点

我不太明白您的用例是什么,或者为什么
wildfly:start
后跟
wildfly:deploy
是不够的

您是在进行手动测试还是自动测试


对于集成测试,如果
wildfly-maven插件
不适合您的需要,请查看它的maven和wildfly支持。

wildfly:start目标不会阻塞,并且它有一个关闭钩子,可以在maven退出后销毁进程。可能值得添加一个配置属性,以不注册关闭挂钩并保持进程运行。。但我已经离题了


由于maven基于生命周期阶段运行目标,因此您可以在
阶段之前运行的阶段中调用
开始
部署
目标。
运行
目标需要
阶段,因此之前的任何操作都应该有效。

您可以在运行
目标的部署之前使用参数


因为
wildfly:start
不会阻塞,所以一旦
wildfly:start
wildfly:deploy
完成,启动的wildfly实例将被关闭。我已经尝试过了,但是当
wildfly:run
之后执行
wildfly:start
时,它会尝试使用相同的端口启动一个新的wildfly实例,当然失败了,我也有同样的问题。mvn wildfly:开始不阻塞。“你能想出一个解决办法吗?”范森不,我想出了一些我现在不记得的解决办法,但不是一个最终的解决办法。如果您有时间,我鼓励您提供James在其回答中提到的新功能()——一个不注册关闭挂钩并保持流程运行的配置属性。如果项目经理给我时间,我会考虑这样做。
<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)