java是否可以自动优化maven依赖项?
我正在从事一个大项目,该项目由大约40个子项目组成,这些子项目具有非常不优化的依赖关系。存在未使用的已声明依赖项以及已使用但未声明的依赖项。当通过其他依赖项添加依赖项时,第二种情况是可能的
我想删除冗余项并添加所需的依赖项。我运行了mvn dependency:analyze
,得到了一长串警告,我现在必须修复
我想知道是否有maven插件或任何其他实用程序可以自动更新我的pom.xml
文件。我试着手动操作,但这需要很多时间。完成这项任务似乎需要几天的复制/粘贴时间
在更糟糕的情况下,我可以自己写这样的脚本,但可能有现成的东西存在
以下是mvn dependency:analyze
如何报告依赖项警告:
[WARNING] Used undeclared dependencies found:
[WARNING] org.apache.httpcomponents:httpcore:jar:4.1:compile
[WARNING] Unused declared dependencies found:
[WARNING] commons-lang:commons-lang:jar:2.4:compile
[WARNING] org.json:json:jar:20090211:compile
# 1 楼答案
我不建议自动清理依赖项
添加所有“已使用未声明…”导致大多数可传递依赖项的重复,从而导致花费更多的时间来阅读和管理它们
删除所有“未使用的声明…”可能导致运行时出错,因为它们是:由反射调用或专门声明以覆盖已在第三方依赖项中使用的同一工件的版本(最好将其编译范围更改为运行时,而测试范围应保持不变以避免泄漏给生产包)或添加以声明某些第三方库等的可选传递依赖项。
# 2 楼答案
我不会说:具有非常未优化的依赖项只是有人没有做好他的工作,因为定义未使用的依赖项表明有人不了解构建工具是什么以及它是如何工作的。这可以与包含许多未使用导入的Java文件相比较。对于Java源代码中未使用的导入,这可以简单地由IDE处理,但是对于Maven中的依赖项,不存在已经表示过的简单方法,问题是各种DI等,这使得这项工作很困难。您可以尝试输出依赖关系的结果:分析到脚本中(该目标存在一个选项),然后在清除依赖关系后测试生成的构建
跑步也许是个好主意
它生成的输出可以非常简单地从输出中提取出来,并且可以用于进一步的处理,比如用作版本maven插件的输入(带有一些预转换)