Maven依赖同路径同名资源文件冲突的优先级规则是怎样的?
Maven同路径冲突资源加载优先级规则
你观测到的结果是符合Maven固定规则的必然结果,并非随机产生。
核心优先级规则
Maven打包时处理不同依赖下的同路径同名资源,优先级完全绑定pom.xml中依赖的声明顺序:
- 依赖声明顺序越靠前,资源优先级越高
- 出现同路径同名资源冲突时,高优先级依赖的资源会直接覆盖低优先级依赖的对应资源,最终打包产物中仅会保留优先级最高的一份
场景匹配说明
你当前的依赖声明顺序如下:
<dependency> <artifactId>a</artifactId> </dependency> <dependency> <artifactId>b</artifactId> </dependency>
依赖a、b都包含META-INF/logo.png资源,因a的声明顺序早于b,打包时a中的logo.png优先级更高,会覆盖b中的同名资源,和你的实测结果完全一致。
调整方案
如果需要指定使用另一依赖的冲突资源,仅需要调整两个依赖在pom.xml中的声明顺序,将需要保留资源的依赖放在更靠前的位置即可。如果需要同时保留两份同名资源,可通过maven-resources-plugin对冲突资源做重命名或路径迁移处理。
内容的提问来源于stack exchange,提问作者Bogdan
相关产品推荐
相关产品推荐

