使用JBoss的Java项目:如何阻止导出EAR时自动生成副本?
JBoss部署EAR时项目目录生成副本及重复部署问题解决
问题原因
- IDE部署配置冗余:主流IDE(Eclipse/IntelliJ)在配置JBoss服务器时,若勾选了"保留项目本地部署副本"类选项,会在导出EAR到JBoss部署目录的同时,在项目根目录生成一份备份副本。
- JBoss扫描路径包含项目目录:如果你的项目目录被添加到JBoss的
deploy-scanner扫描列表中,JBoss会监控该目录的文件变化,IDE导出操作会被识别为部署动作,从而生成副本并触发重复部署。 - 构建工具配置错误:Maven/Gradle的打包插件若同时配置了项目目录和JBoss部署目录作为输出路径,会导致打包时自动生成两份EAR文件。
解决方案
1. 修正IDE服务器部署配置
- Eclipse:打开服务器视图,右键点击JBoss服务器选择「Open」,切换到「Deployment」标签页,检查部署条目是否重复,取消"Deploy to project directory"类选项,确保仅将EAR部署到JBoss的
deployments目录。 - IntelliJ:进入「Run/Debug Configurations」,找到你的JBoss配置,切换到「Deployment」标签,确认部署目标仅指向JBoss部署目录,移除任何指向项目本地目录的部署项。
2. 调整JBoss部署扫描配置
找到JBoss安装目录下的配置文件(独立模式为standalone/configuration/standalone.xml,域模式为domain/configuration/domain.xml),定位到部署扫描子系统节点,确保仅扫描官方deployments目录:
<subsystem xmlns="urn:jboss:domain:deployment-scanner:2.0"> <deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000"/> </subsystem>
移除任何指向项目目录的<deployment-scanner>节点。
3. 修正构建工具打包配置
- Maven:修改
pom.xml中的maven-ear-plugin配置,指定唯一输出目录为JBoss部署目录:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-ear-plugin</artifactId> <version>3.3.0</version> <configuration> <outputDirectory>/your/jboss/path/standalone/deployments</outputDirectory> <!-- 其他EAR打包配置 --> </configuration> </plugin>
- Gradle:修改
build.gradle的ear任务,设置唯一输出目录:
ear { destinationDir = file('/your/jboss/path/standalone/deployments') // 其他EAR打包配置 }
4. 清理IDE本地配置文件
检查项目根目录下的.project(Eclipse)或.idea(IntelliJ)文件夹,移除可能触发本地生成EAR副本的配置项,比如强制备份部署文件的规则。
内容的提问来源于stack exchange,提问作者user25165614
相关产品推荐
相关产品推荐

