打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Maven解决包冲突

依赖树

Copy
$ mvn dependency:tree [WARNING] [WARNING] Some problems were encountered while building the effective settings [WARNING] Unrecognised tag: 'properties' (position: START_TAG seen ...</profile>\n\t <properties>.. @85:18) @ C:\Users\qhong\.m2\settings.xml, line 85, column 18 [WARNING] [INFO] Scanning for projects... [INFO] [INFO] -----------------------< com.xuxueli:xxl-excel >------------------------ [INFO] Building xxl-excel 1.1.2-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ xxl-excel --- [INFO] com.xuxueli:xxl-excel:jar:1.1.2-SNAPSHOT [INFO] +- org.slf4j:slf4j-api:jar:1.7.25:compile [INFO] +- org.apache.poi:poi:jar:3.17:compile [INFO] | +- commons-codec:commons-codec:jar:1.10:compile [INFO] | \- org.apache.commons:commons-collections4:jar:4.1:compile [INFO] \- org.apache.poi:poi-ooxml:jar:3.17:compile [INFO] +- org.apache.poi:poi-ooxml-schemas:jar:3.17:compile [INFO] | \- org.apache.xmlbeans:xmlbeans:jar:2.6.0:compile [INFO] | \- stax:stax-api:jar:1.0.1:compile [INFO] \- com.github.virtuald:curvesapi:jar:1.04:compile [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.572 s [INFO] Finished at: 2019-04-19T11:24:17+08:00 [INFO] ------------------------------------------------------------------------

mvn:dependency:tree 打印出来的是 maven解决了冲突后的树(解决冲突的策略是:就近原则,即离根近的依赖被采纳)

原始依赖树

Copy
$ mvn dependency:tree -Dverbose[WARNING][WARNING] Some problems were encountered while building the effective settings[WARNING] Unrecognised tag: 'properties' (position: START_TAG seen ...</profile>\n\t <properties>... @85:18) @ C:\Users\qhong\.m2\settings.xml, line 85, column 18[WARNING][INFO] Scanning for projects...[INFO][INFO] -----------------------< com.xuxueli:xxl-excel >------------------------[INFO] Building xxl-excel 1.1.2-SNAPSHOT[INFO] --------------------------------[ jar ]---------------------------------[INFO][INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ xxl-excel ---[INFO] com.xuxueli:xxl-excel:jar:1.1.2-SNAPSHOT[INFO] +- org.slf4j:slf4j-api:jar:1.7.25:compile[INFO] +- org.apache.poi:poi:jar:3.17:compile[INFO] | +- commons-codec:commons-codec:jar:1.10:compile[INFO] | \- org.apache.commons:commons-collections4:jar:4.1:compile[INFO] \- org.apache.poi:poi-ooxml:jar:3.17:compile[INFO] +- (org.apache.poi:poi:jar:3.17:compile - omitted for duplicate)[INFO] +- org.apache.poi:poi-ooxml-schemas:jar:3.17:compile[INFO] | \- org.apache.xmlbeans:xmlbeans:jar:2.6.0:compile[INFO] | \- stax:stax-api:jar:1.0.1:compile[INFO] \- com.github.virtuald:curvesapi:jar:1.04:compile[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 1.636 s[INFO] Finished at: 2019-04-19T11:13:29+08:00[INFO] ------------------------------------------------------------------------

通过指定 -Dverbose参数则可以显示原始的依赖树,让你显式地看出某个包都在哪些枝干上出现了。

递归依赖的关系列的算是比较清楚了,每行都是一个jar包,根据缩进可以看到依赖的关系。

  • 最后写着compile的就是编译成功的。
  • 最后写着omitted for duplicate的就是有jar包被重复依赖了,但是jar包的版本是一样的。
  • 最后写着omitted for conflict with xxxx的,说明和别的jar包版本冲突了,而该行的jar包不会被引入。比如上面有一行最后写着omitted for conflict with 1.8.3,那么该行的commons-beanutils:jar:1.8.0不会被引入,只有1.8.3版本的会被引入。

筛选依赖树

Copy
只想看依赖树中包含 groupId 为 javax.serlet 的枝干mvn dependency:tree -Dincludes=javax.servlet不想看依赖树中包含 groupId 为 javax.serlet 的枝干mvn dependency:tree -Dexcludes=javax.servlet

参数的格式(pattern)定义如下:

Copy
[groupId]:[artifactId]:[type]:[version]

每个部分(冒号分割的部分)是支持*通配符的,如果要指定多个格式则可以用,分割,如:

Copy
mvn dependency:tree -Dincludes=javax.servlet,org.apache.*

demo:

Copy
$ mvn dependency:tree -Dverbose -Dincludes=org.apache.poi[WARNING][WARNING] Some problems were encountered while building the effective settings[WARNING] Unrecognised tag: 'properties' (position: START_TAG seen ...</profile>\n\t <properties>... @85:18) @ C:\Users\qhong\.m2\settings.xml, line 85, column 18[WARNING][INFO] Scanning for projects...[INFO][INFO] -----------------------< com.xuxueli:xxl-excel >------------------------[INFO] Building xxl-excel 1.1.2-SNAPSHOT[INFO] --------------------------------[ jar ]---------------------------------[INFO][INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ xxl-excel ---[INFO] com.xuxueli:xxl-excel:jar:1.1.2-SNAPSHOT[INFO] +- org.apache.poi:poi:jar:3.17:compile[INFO] \- org.apache.poi:poi-ooxml:jar:3.17:compile[INFO] +- (org.apache.poi:poi:jar:3.17:compile - omitted for duplicate)[INFO] \- org.apache.poi:poi-ooxml-schemas:jar:3.17:compile[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 1.635 s[INFO] Finished at: 2019-04-19T11:17:21+08:00[INFO] ------------------------------------------------------------------------

也可以直接查询一个artifactid

Copy
mvn dependency:tree -Dverbose -Dincludes=:notify-common

清空本地仓库依赖包

Copy
mvn dependency:purge-local-repository

默认情况下,插件对所有传递依赖项进行操作。这意味着插件可以在开始清除过程之前下载某些缺少的依赖项以收集完整的依赖关系树信息。

actTransitively

为避免此预下载步骤,可以将插件配置为仅使用“actTranstively”参数对项目的直接依赖性进行操作。

Copy
mvn dependency:purge-local-repository -DactTransitively=false

actTransitively是否应该对所有传递依赖性起作用。默认值为true。

设置为false就仅对项目的直接依赖项进行删除,不进行设置就全部删除,包括依赖包的依赖包。。。

reResolve

Copy
mvn dependency:purge-local-repository -DreResolve=false

reResolve是否重新解析依赖关系(就是删除以后是否重新下载依赖包

--fail-at-end

Copy
mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false --fail-at-end

忽略错误( --fail-at-end )。 对于那些有一些依赖关系混乱的项目,或者依赖于一些内部的仓库(这种情况发生),这样做有时是有用的。

过滤删除依赖包

Copy
mvn dependency:purge-local-repository -Dinclude=org.slf4j:slf4j-api,org.slf4j:log4j-over-slf4j

手动清除

手动清除不属于当前项目依赖关系树的特定依赖项

Copy
mvn dependency:purge-local-repository -DmanualIncludes=org.apache:apache

经过测试发现,清理本地代码的include,exclude全无效,不会清除本地任何依赖,includes,exculdes也无效,会清除全部本地依赖,不知道咋回事。

参考:

用dependency插件解决依赖包冲突

清除本地存储库依赖项

用dependency:tree查看maven引入jar包的传递依赖

Apache Maven Dependency Plugin

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
J2EE 开发常用的jar整理
eclipse maven 打war包的几种方式
log4j的有关jar包总结
【SpringBoot】整合日志框架
Java 新老程序员都必须知道的优秀第三方库
从零开始用好 Maven
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服