将 Java EE Web 应用程序部署到 Wildfly/JBoss EAP

Posted

技术标签:

【中文标题】将 Java EE Web 应用程序部署到 Wildfly/JBoss EAP【英文标题】:Deploying Java EE Web App to Wildfly/JBoss EAP 【发布时间】:2018-09-08 09:34:18 【问题描述】:

更多的是“什么是最佳实践?”类似的问题。

我们目前有许多 Java EE Web 应用程序通过 Web 界面手动部署到 JBoss EAP 7.0 应用程序服务器。我正在考虑自动化这些,并有一个简单的 Jenkins 构建,它将使用 Jenkins 推广的构建插件和 Wildfly maven 插件部署到我们的 UAT 环境。

虽然这没问题,但我们显然已经定义了我想要改进的“构建”和“部署”设置。然而,我的问题是,当我们运行“wildfly:deploy”目标时,它会运行构建的 maven 安装部分!

本质上,部署到不同的环境会重新构建应用程序,因此我们无法保证与测试的构建进行逐字节奇偶校验。

有没有最佳实践方法通过使用 Jenkins/Maven 的环境将构建的最终版本部署到 JBoss EAP/Wildfly 上?

谢谢大家!

【问题讨论】:

FWIW 还有wildfly:deploy-only,它将跳过安装阶段。 【参考方案1】:

我不确定为什么需要使用 Maven 进行部署。为什么不使用jboss-cli 工具?有了它,您可以执行以下操作:

jboss-cli.sh --connect --command="deploy target/your.war --force"

这是“本地主机”版本,它假定您尚未为 Wildfly 创建任何用户,但它让您了解可以做什么。 CLI Docs 采用与deploy applications 不同的方式,并在安全方面做了很大的扩展。

Jenkins 可以像运行 maven 构建一样轻松地运行 shell 或批处理脚本,因此在 Jenkins 中实现这应该不会太难。

【讨论】:

太棒了!谢谢回复。我正在考虑做这样的事情,因为将打包与部署分开总是更好,并且在打包阶段之后如果不重建应用程序就无法真正使用 Maven。我假设这需要在 Jenkins 机器上安装 JBoss CLI 才能工作?我们将部署到远程机器上,所以我会查阅文档。谢谢【参考方案2】:

在开发工作流程中,使用 maven 部署是完全可以的,它可以节省时间和上下文切换。

您可以为部署创建一个专用的 maven 配置文件 - 这样您就可以灵活地使用 maven 来构建和部署您想要的任何东西,或者使用您的 deploy 配置文件运行 maven,然后让它进行构建+部署。

前往Wildfly maven plugin 了解更多信息。除了部署之外,它还可以完成许多任务,包括通过 jboss cli 进行的配置任务,但是为了部署,这就是你所需要的:

<profile
  <id>jboss-deploy</id>
  <build>
    <plugins>
      <plugin>
            <groupId>org.wildfly.plugins</groupId>
            <artifactId>wildfly-maven-plugin</artifactId>
            <version>1.2.1.Final</version>
        </plugin>
     </plugins>
  </build>
 </profile>

现在您可以简单地运行mvn clean package -Pjboss-deploy,maven 将编译和打包您的应用程序,然后将生成的 war 或 ear 部署到您正在运行的 JBoss/Wildfly 实例。您也可以通过mvn wildfly:deploy手动调用部署

玩得开心。

【讨论】:

以上是关于将 Java EE Web 应用程序部署到 Wildfly/JBoss EAP的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse IDE for Java EE Developers 新导入一个Web工程,怎样部署运行

云是不是为企业 Java Web 应用程序做好了准备?寻求 Java EE 托管建议 [关闭]

解决Eclipse EE部署web项目在Tomcat webapp目录下没有工程文件的问题

lombok 介绍及基本使用方法

开发基于 Java EE 的 Web 应用程序时如何提高生产力

java EE是啥?