打开APP
userphoto
未登录

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

开通VIP
java查找哪些jar与哪些java源文件一起使用

我是我公司的新配置经理,我正在启动一个项目来清理我们的大部分构建过程.

我们已经在一个Subversion项目中收集了大量的罐子.有些人将这些罐子复制到他们的项目中.其他人在他们的项目中将SVN:External放到了这个目录中.其他人在这些罐子里有一种复杂的复制方式.这些是我们想要使用的唯一的罐子.

我要搬到Ivy,也许是Maven.我已经设置了一个Maven存储库,并且已经识别出这些jar的GroupId,ArtifactId和Version,并且已经记录了如何通过Ivy和Maven配置访问所需的那些.

我想查看所有项目的源文件,查找所有import语句,并将这些导入与这些jar包含的所有类进行比较.

我想找到一组给定来源直接调用的所有罐子.例如,如果jar包含:

import org.apache.commons.beanutils.*

我知道它需要commons-beanutils.jar(版本1.6).我也知道它需要commons-logging.jar,但我会让Maven和Ivy处理这个问题.我只是想告诉开发人员他们创建pom.xml或ivy.xml时,他们需要在他们的pom.xml或ivy.xml文件中包含common-beanutils#common-beansutil#1.6.

我知道这不是一个完整的清单.我知道运行时需要jar,但不能编译.我也知道有些类可以使用多个罐子.我现在也开发人员可以这样做:

import org.apache.commons.*;

这将与几十个罐子相匹配,什么都不告诉我. (也许有办法弄清楚Java源文件中实际使用了哪些类).

我可以写一个可能会做到这一点的Python或Perl脚本,但我希望已经有一些东西可以节省我几个小时的工作.我知道JBoss的TattleTale,但文档似乎说它只适用于jar并显示jar之间的依赖关系等等.我对此并不感兴趣.我只是想知道我们的来源正在调用什么罐子,让Ivy和Maven处理更深层的依赖关系.

有这样的工具吗?

附录

只是为了更具体.这是一个古老的项目.事实上,有50个左右的项目.我们知道一个特定的项目需要运行20个罐子,像TattleTail这样的工具可以通过并向您展示整个数据分析.

但是,让我们从开发人员的角度来看待它.我有一个问题,我找到了一个可以解决我的问题的开源项目.我阅读了文档,编写了我的代码并导入了我需要的类.我知道包含这些类的开源项目的jar,这就是我所知道的.

我想要做的是回到原始开发人员的心态:我在这个项目中使用了这些类,我需要这5个罐子.那些5个罐子可能还需要另外15个罐子,这是Ivy / Maven现在要处理的东西.我们知道该计划需要的20个罐子.我只想要开发人员最初在他们的代码中引用的5.

这是为了帮助开发人员编写他们的pom.xml或ivy.xml.我不希望他们将所有20个jar放在那个pom.xml或ivy.xml文件中 – 只需要他们需要的五个.

这只是一个起点.他们可能导入了com.foo.bar.bar.foo,该类位于foo-all.jar,foo-client.jar和bar-talk.com中.开发人员必须决定他们的项目需要哪一个.

这是我们编程中的一个巨大的范式转换,但我们正在失去对jar和版本的跟踪,并确保所有这些项目可以相互通信.使用Ivy / Maven将大大简化这一混乱.

解决方法:

Tattletale最终给了我第一级依赖项,这是构建我的ivy.xml或pom.xml文件所需要的.它偶尔会错过一两个,但除此之外它的效果还不错.

来源:https://www.icode9.com/content-1-311501.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Java Gradle入门指南之依赖管理(添加依赖、仓库、版本冲突)
Maven搭建(使用自带框架)
用最简单的gradle代码,解决你java项目中的jar依赖之苦
解决 maven 项目无法编译的问题
IntelliJ IDEA插件开发手册
Hadoop2.5 Eclipse插件制作、连接集群、及hadoop
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服