如何自动获取Maven依赖对应的Git代码仓库地址?
解析依赖POM文件
Maven依赖的POM中可能包含<scm>标签,里面会记录源码仓库的Git地址。可以用mvn dependency:tree -DoutputType=xml命令导出项目所有依赖的完整POM信息,再写脚本批量解析每个依赖的POM,提取<scm>节点里的connection或developerConnection字段。但要注意,不少第三方依赖没填写这个字段,这种情况就拿不到有效信息。挖掘Maven Central的关联信息
Maven Central的部分依赖会关联源码包(sources.jar),有些源码包里会附带.git目录或者README文件,里面可能有仓库链接,不过需要下载源码包后解析,效率偏低。另外,Maven Central的REST API可以查询依赖的附加元数据,部分依赖会在这里标注源码仓库地址,但同样不是所有依赖都有这个数据。用工具或自定义插件批量处理
可以用开源工具或者自己写个Maven插件,遍历项目的依赖树,先检查每个依赖POM的SCM信息,再结合代码托管平台的API,根据groupId和artifactId搜索匹配的项目。不过这种方法有一定误判率,毕竟可能存在同名项目。兜底:规则匹配+手动补全
对于没有仓库信息的依赖,要么手动查找,要么根据groupId的规律做匹配——比如很多大厂的依赖groupId是公司域名,对应的仓库通常在公司的代码托管组织下,比如com.google.guava对应https://github.com/google/guava,这种规则能覆盖不少常见依赖。
内容的提问来源于stack exchange,提问作者Milo van der Zee

