如何让WildFly Maven Plugin启动的实例在Maven退出后持续后台运行?
解决WildFly Maven Plugin启动后随Maven退出而终止的问题
要让WildFly实例在Maven进程退出后持续运行,核心是让WildFly作为独立进程启动,而非Maven的子进程。你需要在插件配置中添加关键参数,并调整相关行为:
1. 修改插件配置
在WildFly Maven Plugin的<configuration>块中添加<fork>true</fork>,同时调整冗余的超时配置,避免插件不必要的等待。修改后的配置如下:
<plugin> <groupId>org.wildfly.plugins</groupId> <artifactId>wildfly-maven-plugin</artifactId> <version>3.0.2.Final</version> <configuration> <jboss-home>${jboss.home}</jboss-home> <server-config>${jboss.ser.config}</server-config> <properties-file>${jboss.properties.file}</properties-file> <server-args> <server-arg>jboss.server.base.dir=${jboss.server.base.dir}</server-arg> </server-args> <java-opts> <java-opt>-Xmx2048m -Xms640m -XX:MaxPermSize=256M</java-opt> </java-opts> <startup-timeout>240</startup-timeout> <!-- 移除timeout配置,避免插件等待额外时间 --> <protocol>remoting</protocol> <force>true</force> <filename>${filename}</filename> <name>${warfile.name}</name> <checkPackaging>false</checkPackaging> <hostname>${jboss.hostname}</hostname> <port>${jboss.management.port}</port> <!-- 关键配置:让WildFly作为独立进程启动 --> <fork>true</fork> <!-- 可选:插件启动服务器后无需等待关闭信号 --> <wait-for-shutdown>false</wait-for-shutdown> </configuration> </plugin>
2. 执行正确的Maven命令
- 先构建应用:
mvn clean package - 启动WildFly并部署应用:
mvn wildfly:start wildfly:deploy
执行完成后,Maven会完成服务器启动和应用部署流程并退出,WildFly将在后台持续运行。
3. 停止WildFly实例
若需要停止运行中的WildFly,执行以下命令即可:
mvn wildfly:shutdown
原理说明
默认情况下,wildfly:start未启用进程分离,WildFly作为Maven的子进程运行,当Maven因任务完成或超时退出时,会向子进程发送终止信号。添加<fork>true</fork>后,WildFly会被启动为独立的后台进程,脱离Maven的进程生命周期,因此Maven退出后仍能持续运行。
内容的提问来源于stack exchange,提问作者Carlos Oliveira
相关产品推荐
相关产品推荐

