我是我公司的新配置经理,我正在启动一个项目来清理我们的大部分构建过程. 我们已经在一个Subversion项目中收集了大量的罐子.有些人将这些罐子复制到他们的项目中.其他人在他们的项目中将SVN:External放到了这个目录中.其他人在这些罐子里有一种复杂的复制方式.这些是我们想要使用的唯一的罐子. 我要搬到Ivy,也许是Maven.我已经设置了一个Maven存储库,并且已经识别出这些jar的GroupId,ArtifactId和Version,并且已经记录了如何通过Ivy和Maven配置访问所需的那些. 我想查看所有项目的源文件,查找所有import语句,并将这些导入与这些jar包含的所有类进行比较. 我想找到一组给定来源直接调用的所有罐子.例如,如果jar包含:
我知道它需要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,但不能编译.我也知道有些类可以使用多个罐子.我现在也开发人员可以这样做:
这将与几十个罐子相匹配,什么都不告诉我. (也许有办法弄清楚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./content-1-311501.html |
|