是否存在可识别配置中类命名冲突的Gradle插件,解决Jetty类重复告警问题
类路径类名冲突Gradle检测方案
以下是可提前识别类命名冲突的常用Gradle插件及使用方式:
- 专用类冲突检测插件:
gradle-classpath-collision-detector是专门针对类路径同名类问题设计的检测工具,可扫描所有项目依赖的Jar包,匹配全限定类名完全一致的条目,支持自定义排除规则、冲突严重等级,可将检测任务集成到构建流程中,在打包阶段就输出所有冲突类及对应的依赖来源,提前发现Jetty部署阶段才会告警的多位置类扫描问题。 - Shadow插件自带冲突检测能力:如果项目本身使用Shadow插件打Fat Jar,可直接开启
shadowJar任务的冲突检测配置,打包时会自动输出所有同名类冲突位置,同时支持自定义冲突解决策略。 - 依赖分析类插件:
dependency-analyze类插件除了可排查无用依赖、依赖版本不一致问题外,也支持类重复场景的扫描,可同时解决多类依赖问题。
你可以参考以下基础配置快速接入专用冲突检测插件:
plugins { id "io.github.redgreencoding.classpath-collision-detector" version "0.7.0" } collisionDetector { // 指定要扫描的依赖配置,一般扫描运行时全量依赖即可 configurations = [project.configurations.runtimeClasspath] // 配置不需要检测的公共包路径,减少误报 excludedPackages = ["java.*", "javax.*", "org.w3c.*"] // 检测到冲突时直接中断构建,强制提前处理问题 failOnCollision = true }
你也可以配合依赖scope配置从源头减少冲突:针对服务器类路径已经提供的依赖,比如taglibs、servlet-api等,将其scope设置为
providedCompile,避免重复打包到应用产物中。
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

