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

Maven多模块项目如何正确下载使用Wildfly Jar包

问题根源

你的配置存在两个核心错误:

  1. import scope的依赖只能放在<dependencyManagement>节点下,直接写在父POM的<dependencies>节点下不会生效,也无法实现依赖版本导入的效果。
  2. 你导入的org.wildfly:wildfly-parent是WildFly服务器项目自身构建用的父POM,不是给业务应用开发用的依赖BOM(物料清单),它本身不会帮你引入任何可用的应用开发依赖。

另外你存在一个认知误区:WildFly安装包modules目录下的包是服务器运行时自身使用的,和Maven的依赖解析逻辑完全无关,Maven不会因为你导入了WildFly相关的POM,就自动把这些包加入项目编译类路径。

正确配置步骤

1. 父POM导入官方BOM

在父POM的<dependencyManagement>节点下,导入WildFly官方为应用开发提供的Java EE 8 BOM,统一管理所有规范API、常用第三方包的版本,替换掉你之前错误的wildfly-parent导入配置:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.wildfly.bom</groupId>
      <artifactId>wildfly-ee8</artifactId>
      <version>21.0.2.Final</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

2. 子模块按需声明依赖

BOM仅负责统一依赖版本,不会自动把依赖加入项目类路径,你在代码里用到什么包,就必须在对应子模块的<dependencies>节点下明确声明。所有WildFly运行时已经自带的包,scope必须设置为provided,避免打包时重复引入引发类加载冲突。

针对你报错的几个包,对应依赖配置参考如下:

<dependencies>
  <!-- 解决javax.servlet.http包不存在问题 -->
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <scope>provided</scope>
  </dependency>
  <!-- 解决javax.xml.ws包不存在问题 -->
  <dependency>
    <groupId>javax.xml.ws</groupId>
    <artifactId>jaxws-api</artifactId>
    <scope>provided</scope>
  </dependency>
  <!-- 解决javax.mail、javax.mail.internet包不存在问题 -->
  <dependency>
    <groupId>javax.mail</groupId>
    <artifactId>javax.mail-api</artifactId>
    <scope>provided</scope>
  </dependency>
  <!-- 解决org.apache.commons.beanutils包不存在问题 -->
  <dependency>
    <groupId>commons-beanutils</groupId>
    <artifactId>commons-beanutils</artifactId>
    <scope>provided</scope>
  </dependency>
</dependencies>
注意事项
  • 不要在业务项目中直接继承或导入wildfly-parent,这个POM的所有依赖、插件配置都是为WildFly服务器自身源码构建服务的,和业务应用的开发场景不匹配。
  • 不要依赖本地安装的WildFly服务器内的包做编译,所有编译期依赖必须通过Maven中央仓库或你配置的私服下载,provided scope的依赖仅在编译、测试阶段生效,打包时不会被加入最终产物,运行时会直接使用WildFly自带的对应包。
  • 如果后续需要用到WildFly modules目录下的其他第三方包,先确认该包在BOM中已经管理了版本,声明时不需要写版本号直接加provided scope即可;如果BOM中没有对应包,要么手动指定版本声明为provided scope,要么把对应依赖的JAR包作为公共模块部署到WildFly后再使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 11:09:28