如何排除Thorntail EJB依赖引入的jsoup 1.8.3以修复漏洞?
彻底排除jsoup 1.8.3的解决方案
针对你遇到的jsoup被打包进Thorntail构建产物,但常规依赖排除不生效的问题,可通过以下步骤解决:
1. 全局拦截jsoup依赖
由于Thorntail的模块依赖层级较深,单依赖排除可能无法覆盖所有引入路径。在POM的<dependencyManagement>中添加全局排除规则,确保所有传递依赖中的jsoup都被拦截:
<dependencyManagement> <dependencies> <!-- 若父POM已引入Thorntail BOM,在此处添加排除 --> <dependency> <groupId>io.thorntail</groupId> <artifactId>bom</artifactId> <version>${version.thorntail}</version> <type>pom</type> <scope>import</scope> <exclusions> <exclusion> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> </exclusion> </exclusions> </dependency> <!-- 强制标记jsoup为provided,避免被打包 --> <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.8.3</version> <scope>provided</scope> </dependency> </dependencies> </dependencyManagement>
2. 配置Thorntail插件排除依赖
Thorntail的打包插件独立处理依赖集合,需在插件配置中明确排除jsoup,避免它被打包进内嵌的m2Repo:
<plugin> <groupId>io.thorntail</groupId> <artifactId>thorntail-maven-plugin</artifactId> <version>${version.thorntail}</version> <executions> <execution> <goals> <goal>package</goal> </goals> </execution> </executions> <configuration> <exclusions> <exclusion> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> </exclusion> </exclusions> </configuration> </plugin>
3. 清理重建项目
执行以下命令彻底清理旧构建产物,强制更新依赖并重新打包:
mvn clean package -U
4. 验证排除效果
- 打开
target/collector-thorntail.jar,检查m2Repo/org/jsoup目录是否已被移除; - 执行命令验证依赖树中是否还有jsoup:
若无输出,说明依赖树中已无jsoup;若仍有输出,需排查父POM或其他模块是否存在未排除的jsoup引入路径。mvn dependency:tree -Dverbose | grep jsoup
内容的提问来源于stack exchange,提问作者Hrishikesh Shukla
相关产品推荐
相关产品推荐

