You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Wildfly中实现自动部署?(基于Eclipse与Maven环境)

实现Eclipse+Maven项目自动编译并部署到Wildfly(无需重启)

我之前也碰到过一模一样的需求,折腾了一阵后总结出两个亲测有效的方案,刚好分享给你:首先得明确,Wildfly默认就支持自动部署检测——只要deployments目录里的文件有变化(比如新war包替换旧的),它会自动重新部署应用,完全不用重启服务器。所以核心就是搞定「编译后自动把war包复制到Wildfly部署目录」这一步,下面具体说:

方案一:用Maven插件实现自动复制(推荐,贴合Maven工作流)

通过配置Maven的maven-antrun-plugin,把复制war包的操作绑定到package阶段,这样每次执行打包命令时,编译完成后会自动把war包同步到Wildfly目录:

  1. 打开项目的pom.xml,在<build>→<plugins>里添加以下配置:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>3.1.0</version>
    <executions>
        <execution>
            <id>deploy-to-wildfly</id>
            <!-- 绑定到package阶段,打包完成后自动执行复制 -->
            <phase>package</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <tasks>
                    <!-- 替换成你的Wildfly部署目录绝对路径 -->
                    <copy file="${project.build.directory}/${project.build.finalName}.war" 
                          todir="D:\wildfly-26.1.3.Final\standalone\deployments" 
                          overwrite="true"/>
                    <!-- 可选:如果war替换后Wildfly没检测到,创建.dodeploy文件强制触发部署 -->
                    <touch file="D:\wildfly-26.1.3.Final\standalone\deployments\${project.build.finalName}.war.dodeploy"/>
                </tasks>
            </configuration>
        </execution>
    </executions>
</plugin>
  1. 配置说明:
    • ${project.build.directory}是Maven内置变量,对应你的target目录;${project.build.finalName}是打包后的war包名称(默认是artifactId-version),不用手动修改。
    • <touch>步骤是可选的,但有时候war文件替换后Wildfly可能没及时检测到,创建对应的.dodeploy文件可以强制触发部署(Wildfly会自动处理这个文件,部署完成后会自动删除)。
  2. Eclipse里使用方式:右键项目→Run As→Maven Build...,在Goals里输入package,点击Run。之后每次修改代码,执行这个Maven任务就能自动完成编译、打包、同步到Wildfly,Wildfly会立刻重新部署。

方案二:用Eclipse构建后任务实现自动复制

如果你更习惯用Eclipse自带功能,也可以直接配置构建后步骤,让Eclipse编译完成后自动复制war包:

  1. 右键项目→Properties→Java Build Path→切换到「Builder」标签页。
  2. 点击New...,选择「Program」类型,点击OK。
  3. 在配置窗口里:
    • Name:随便起个名字,比如「Copy War to Wildfly」。
    • Location:Windows下填cmd.exe,Linux/macOS下填/bin/cp。
    • Arguments(Windows示例):/c copy "${project_loc}\target\${project_name}.war" "D:\wildfly-26.1.3.Final\standalone\deployments\" /Y
      • 替换成你的Wildfly路径即可,${project_loc}和${project_name}是Eclipse内置变量,会自动识别项目根目录和名称。
    • 切换到「Build Options」标签页,勾选「During auto builds」(自动编译时触发)或「During manual builds」,再勾选「Specify working set of relevant resources」,选择你的源码目录,避免无关文件变化触发复制。
  4. 保存配置后,每次Eclipse编译项目(自动或手动),war包都会自动同步到Wildfly,Wildfly会自动重新部署。

额外确认:Wildfly自动扫描是否开启

默认情况下Wildfly的自动部署是开启的,但如果没生效,可以检查standalone/configuration/standalone.xml里的配置:
找到<deployment-scanner>节点,确保scan-interval的值大于0(比如scan-interval="5000",单位是毫秒,代表每5秒扫描一次目录),配置示例:

<deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000"/>

如果scan-interval是0,就会关闭自动扫描,改成大于0的数值即可。

这样配置完,修改代码后只要触发编译(Maven打包或Eclipse构建),就能立刻看到修改效果,完全不用重启Wildfly~

内容的提问来源于stack exchange,提问作者markzzz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:23:35