我想将maven项目的依赖项列表导出为CSV或TSV文件。
我知道我可以生成依赖列表作为" mvn网站的一部分:site"命令,但它的格式非常不方便。
我需要一个简单的CSV文件,至少包含以下字段:名称,版本,下载URL,许可证名称,许可证URL
是否有现成的工具可以轻松实现这一目标?
答案 0 :(得分:1)
我需要名称和版本,这是我的解决方案。
Unix提供了多种处理文本的工具。在Windows上,打开git bash并执行以下命令:
mvn -o dependency:list | grep ":.*:.*:compile" | sed "s/\[INFO\] \([^:]*\):\([^:]*\):jar:\([^:]*\):compile/\1;\2;\3/" | sort -u
这将输出编译依赖项,如下所示:
ch.qos.logback;logback-classic;1.1.1
ch.qos.logback;logback-core;1.1.1
com.fasterxml.jackson.core;jackson-annotations;2.8.6
答案 1 :(得分:0)
没有。没有现有工具可以生成依赖关系和许可证的CSV列表。现有工具mvn dependency:list
和mvn site:site
将提供数据,但不提供CSV格式。
原始答案:
mvn dependency:list
是您需要的maven插件和命令。它需要很多选项,但我认为它们中的任何一个都不会产生CSV。您必须自己将输出转换为CSV。它不应该太难。一个快速的谷歌找到了this example的某个人,他们走向了你需要的地方。
答案 2 :(得分:0)
除了koppor's answer,这是一个简洁的解决方案,可以为每个依赖项获取groupId:artifactId:version
元组,您可以使用mvn dependency:purge-local-repository
强制重新下载maven依赖项。
在此过程中,已解析的依赖项的URL将写入控制台输出。您可以使用dependency:list
重定向该命令的输出(就像-DoutputFile
)。
请注意,根据您是分析单个项目还是完整项目结构,您可能希望将-DappendOutput
设置为true。
检索许可证和许可证URL非常困难,因为这不是必需信息。我可以想象的最简单的方法是实际下载依赖项的jar和pom。 POM 可能包含许可证信息,如果不是,则需要对jar进行分析。