将 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目录下没有工程文件的问题