Java 依赖图表
Java dependency grapher
问题:
我有一个 2000 年代初期的大型、陈旧、杂乱无章的 java 项目。
该项目是使用ant构建的。
没有依赖管理,一切都通过本地存储 jar 来处理。
构建脚本的 compile
和 package
目标非常广泛,大部分只是编译并随后打包整个项目,根据需要调整环境特定属性文件。
在项目生命周期的某个时刻,引入了一些单独的构建目标,以便为管理工具等启用 Web 界面。
但是,由于没有依赖项管理,而且构建脚本的选择性不是很强,当前过程是打包整个 Web 应用程序并将其与管理工具一起部署,差异列表非常少两者之间。
我目前正着手尝试通过弃用和重构 ant 构建文件并通过 CI 工具引入 build/deployment 自动化来使代码库保持理智。
作为这项工作下一阶段的一部分,我想尝试重构项目结构和构建文件,以仅将需要打包的内容打包到管理工具的 war 文件中,并且生产网络应用程序,希望只编译一次而不是多次。
要解决这个问题,我似乎需要为给定的 JSP 构建依赖项列表,或者至少构建 java 类 的列表。手动跑腿来追踪一些东西几乎不在我之下,但项目的范围足够大,如果没有一些自动化的帮助,我没有希望在合理的时间范围内完成任务。
我还没有找到不涉及大量软件ware 许可证或已经在使用 Maven 的项目的解决方案。
鉴于 Eclipse 可以从该项目中的任意源文件中获取任意方法,并在文件系统上找到对应的资源,看来这一定不是无法解决的工程难题 -
是否存在免费的(如在啤酒中,理想情况下也如在 software 中)的解决方案来为这样的项目生成依赖图(或类似的)?
否则,stack overflow 的好公民能否建议一种我可能没有考虑过的不同方法来解决我的问题?
我看到这个问题被认为是重复的。
希望提升某人的未来google搜索结果:
jdeps
将递归打印给定 class 名称、class 文件或 jar 到 stdout 的依赖关系,这可能是解决这个确切问题的成本最低的解决方案,并且出现预打包 JDK 8 及更高版本。
我发现在一个有 4 年历史的问题上隐藏了 10 个答案,这个问题是在相关实用程序存在之前提出的,在一个获得 0 个赞成票的答案上,所以,我觉得在这里重新发布它可能是对网站未来用户的潜在价值。
问题:
我有一个 2000 年代初期的大型、陈旧、杂乱无章的 java 项目。
该项目是使用ant构建的。
没有依赖管理,一切都通过本地存储 jar 来处理。
构建脚本的 compile
和 package
目标非常广泛,大部分只是编译并随后打包整个项目,根据需要调整环境特定属性文件。
在项目生命周期的某个时刻,引入了一些单独的构建目标,以便为管理工具等启用 Web 界面。
但是,由于没有依赖项管理,而且构建脚本的选择性不是很强,当前过程是打包整个 Web 应用程序并将其与管理工具一起部署,差异列表非常少两者之间。
我目前正着手尝试通过弃用和重构 ant 构建文件并通过 CI 工具引入 build/deployment 自动化来使代码库保持理智。
作为这项工作下一阶段的一部分,我想尝试重构项目结构和构建文件,以仅将需要打包的内容打包到管理工具的 war 文件中,并且生产网络应用程序,希望只编译一次而不是多次。
要解决这个问题,我似乎需要为给定的 JSP 构建依赖项列表,或者至少构建 java 类 的列表。手动跑腿来追踪一些东西几乎不在我之下,但项目的范围足够大,如果没有一些自动化的帮助,我没有希望在合理的时间范围内完成任务。
我还没有找到不涉及大量软件ware 许可证或已经在使用 Maven 的项目的解决方案。
鉴于 Eclipse 可以从该项目中的任意源文件中获取任意方法,并在文件系统上找到对应的资源,看来这一定不是无法解决的工程难题 -
是否存在免费的(如在啤酒中,理想情况下也如在 software 中)的解决方案来为这样的项目生成依赖图(或类似的)?
否则,stack overflow 的好公民能否建议一种我可能没有考虑过的不同方法来解决我的问题?
我看到这个问题被认为是重复的。
希望提升某人的未来google搜索结果:
jdeps
将递归打印给定 class 名称、class 文件或 jar 到 stdout 的依赖关系,这可能是解决这个确切问题的成本最低的解决方案,并且出现预打包 JDK 8 及更高版本。
我发现在一个有 4 年历史的问题上隐藏了 10 个答案,这个问题是在相关实用程序存在之前提出的,在一个获得 0 个赞成票的答案上,所以,我觉得在这里重新发布它可能是对网站未来用户的潜在价值。