【问题标题】:Start and configure a WildFly server and deploy the app using wildfly-maven-plugin in 1 maven run启动并配置 WildFly 服务器并在 1 次 maven 运行中使用 wildfly-maven-plugin 部署应用程序
【发布时间】:2014-11-07 10:19:17
【问题描述】:

我想有一种方法来运行 maven,这样它就可以:

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

问题是:

  • wildfly:run 阻止,因此无法执行其他 maven 目标
  • 必须先运行服务器实例,然后才能对其进行配置或部署应用 (daaa)

我想到的一个可能的解决方法是:

  • wildfly:start
  • 配置服务器并部署应用程序
  • 在用户按下 CTRL-C 之前一直阻塞,有没有 maven 插件可以做到这一点?

【问题讨论】:

  • 我遇到了完全相同的问题。 mvn wildfly:start 不会阻塞。你能想出一个解决方案吗?
  • @fansonly 不,我想出了一些我现在不记得的解决方法,但不是最终的解决方案。如果您有时间,我鼓励您提供 James 在他的回答中提到的新功能 (github.com/wildfly/wildfly-maven-plugin) - 一个配置属性,用于不注册关闭挂钩并让进程继续运行。
  • 如果项目经理给我时间,我会考虑这样做的。

标签: java maven wildfly


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我已经尝试过了,但是当wildfly:runwildfly:start 之后执行时,它会尝试使用相同的端口启动一个新的WildFly 实例,当然会失败。
    【解决方案3】:

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

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

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

    【讨论】:

    • 因为wilfdly:start不会阻塞,所以一旦wildfly:startwildfly:deploy完成,启动的WildFly实例就会被关闭。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    • 1970-01-01
    • 2017-08-28
    • 2020-05-05
    • 2015-09-14
    相关资源
    最近更新 更多