升级至Wildfly 26.1.3.Final(JakartaEE9)时Arquillian集成测试失败
问题解决思路与方案
核心问题定位
你当前的核心矛盾是使用了Wildfly Jakarta EE8的工具BOM适配Jakarta EE9的应用环境,导致Arquillian版本被锁定在1.6.0,手动升级单个组件后出现版本割裂的依赖冲突。
分步解决方案
1. 替换为Wildfly Jakarta EE9专属工具BOM
Wildfly 26.1.3.Final提供了对应Jakarta EE9的工具BOM,替换原EE8的BOM:
<dependencyManagement> <dependencies> <!-- 移除原wildfly-jakartaee8-with-tools依赖 --> <dependency> <groupId>org.wildfly.bom</groupId> <artifactId>wildfly-jakartaee9-with-tools</artifactId> <version>26.1.3.Final</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
2. 统一锁定Arquillian 1.8.0版本
在dependencyManagement中引入Arquillian的BOM,确保所有核心组件版本一致:
<dependencyManagement> <dependencies> <!-- 先引入Wildfly Jakarta EE9工具BOM --> <dependency> <groupId>org.wildfly.bom</groupId> <artifactId>wildfly-jakartaee9-with-tools</artifactId> <version>26.1.3.Final</version> <type>pom</type> <scope>import</scope> </dependency> <!-- 引入Arquillian核心BOM覆盖版本 --> <dependency> <groupId>org.jboss.arquillian.core</groupId> <artifactId>arquillian-core-bom</artifactId> <version>1.8.0.Final</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.jboss.arquillian.container</groupId> <artifactId>arquillian-container-bom</artifactId> <version>1.8.0.Final</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
3. 清理冗余依赖排除
移除之前手动添加的无效依赖排除,让BOM自动管理版本一致性。如果执行mvn dependency:tree后仍有1.6.0版本的Arquillian组件残留,找到对应的依赖源,针对性排除:
<!-- 示例:排除Wildfly Arquillian容器依赖中的旧版本组件 --> <dependency> <groupId>org.wildfly.arquillian</groupId> <artifactId>wildfly-arquillian-container-managed</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.jboss.arquillian.container</groupId> <artifactId>arquillian-container-spi</artifactId> </exclusion> <exclusion> <groupId>org.jboss.arquillian.core</groupId> <artifactId>arquillian-core-spi</artifactId> </exclusion> <exclusion> <groupId>org.jboss.arquillian.config</groupId> <artifactId>arquillian-config-api</artifactId> </exclusion> <exclusion> <groupId>org.jboss.arquillian.config</groupId> <artifactId>arquillian-config-impl-base</artifactId> </exclusion> </exclusions> </dependency>
4. 验证依赖一致性
执行mvn dependency:tree | grep arquillian,确认所有Arquillian相关组件版本均为1.8.0.Final,无混合版本存在。
内容的提问来源于stack exchange,提问作者sven
相关产品推荐
相关产品推荐

