gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 03:42:03 24 4
gpt4 key购买 nike

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

我们在一个 Subversion 项目中存放了大量的 jar。有些人将这些 jar 复制到他们的项目中。其他人将他们项目中的 SVN:External 放到这个目录中。其他人在这些 jar 里有一种复杂的复制方式。这些是我们应该使用的唯一 jar 。

我正在转到 Ivy,也许还会转到 Maven。我已经设置了一个 Maven 存储库,并确定了这些 jar 的 GroupId、ArtifactId 和版本,并记录了如何通过 Ivy 和 Maven 配置访问您需要的那些。

我想遍历所有项目的源文件,找到所有导入语句,并将这些导入与这些 jars 包含的所有类进行比较。

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

import org.apache.commons.beanutils.*

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

我知道这不是完整的列表。我知道运行时需要 jar,但不需要编译。我也知道有些类可以使用多个 jar 。我现在开发人员也可以这样做:

import org.apache.commons.*;

它会与几十个 jar 相匹配,但什么也不会告诉我。 (也许有一种方法可以弄清楚 Java 源文件中实际使用了哪些类)。

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

有这样的工具吗?


附录

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

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

我想做的是回到最初开发者的心态:我在这个项目中使用了这些类,我需要这5个jar。这 5 个 jar 可能需要另外 15 个才能运行,这是 Ivy/Maven 现在可以处理的事情。我们知道程序需要的 20 个 jar 。我只想要开发人员最初在其代码中引用的 5。

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

这只是一个起点。他们可能导入了 com.foo.bar.bar.foo 并且那个类在 foo-all.jar, foo-client.jarbar-talk.com。开发人员必须决定他们的项目需要其中的哪一个。

这是我们编程中的一个巨大范式转变,但我们正在忘记 jar 和版本,并确保所有这些项目都可以相互通信。使用 Ivy/Maven 将大大简化这一困惑局面。

最佳答案

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

关于java 查找哪些 jar 与哪些 java 源文件一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11977409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com