是否有管理,跟踪和涉及到大量使用Maven的Java源项目的所有库的依赖报告的工具吗?和管理上的所有开源项目的Java Maven依赖报告为一个大项目
使用Maven来管理构建时间依赖性很好,但是如果有大量源代码项目(比如50个)都有自己的Maven pom.xml,是否有任何工具或产品可以用来回答如
- 什么是我们所有源 项目中使用的整套库?
- 什么库的版本,我们使用的是?
- 是我们始终如一地利用图书馆Y的X版本在所有开源项目, 还是我们有库的版本中使用的稳定的混合?
是否有管理,跟踪和涉及到大量使用Maven的Java源项目的所有库的依赖报告的工具吗?和管理上的所有开源项目的Java Maven依赖报告为一个大项目
使用Maven来管理构建时间依赖性很好,但是如果有大量源代码项目(比如50个)都有自己的Maven pom.xml,是否有任何工具或产品可以用来回答如
我从来没有听说过这样的工具。你可以做什么:
每个项目使用dependency:list
和比较/合并结果(写一个脚本)。
使用的材料明细表。这对管理依赖版本很有用。您可以列出所有通常的版本依赖关系,并将BOM导入到所有项目中,这样您就可以在任何地方获得相同的版本。
结合您的单独的项目为多模块项目。然后,您可以修复父pom中的版本,还可以更多地分析和影响版本。
对于我使用编译代码和收集依赖关系的项目。这是一个python脚本,用于获取包含每个项目的完整maven输出dependency:list的所有文件。这样做的目的只是为了让我来加载依赖于运行一个程序,但你可以修改脚本做更好的事情与相关性集合的
#!的/ usr/bin中/ python3
from os import listdir
from os.path import isfile, join
files = [join("deps/", f) for f in listdir("deps/") if isfile(join("deps/", f))]
allParts = []
#Need to exclude all.dep
for entry in files:
print("Considering: ", entry)
if entry == "deps/all.dep":
continue
f = open(entry, 'r')
lines = f.readlines()
# for line in lines:
# if line.startswith("[WARNING]"): continue
# if line.startswith("Down"): continue
if(entry == "deps/dockhorn.dep"):
print(lines)
parts = lines[-1][:-1].split(":")
print(parts)
allParts.extend(parts)
s = set(allParts)
print("\n".join(s))
f = open("deps/all.dep", 'w')
f.write(":".join(s) + "\n")
f.close()
#1是一个选项,我们已经使用了一些东西,直到这一点。从项目一开始,#2就可以实现,但现在已经有不同的项目管理自己的依赖关系,并且可能存在不同的库版本,现在引入BOM将是不平凡的。对于#3我们已经有相关的项目构建为多模块项目,但对于不相关的项目来说,这并不合理(至少在我们的情况下) –