将Maven依赖列表导出为CSV

3
我想将Maven项目的依赖关系列表导出为CSV或TSV文件。
我知道可以通过“mvn site:site”命令生成依赖关系列表,但这种格式对我的需求非常不方便。
我需要一个简单的CSV文件,至少包含以下字段:名称、版本、下载URL、许可证名称、许可证URL。
是否有任何现有工具使这变得容易?

也许 https://github.com/fordfrog/xml2csv 可以帮助你。但是,这对于传递依赖关系并没有帮助。 - koppor
1
xml2csv 简单地允许将 pom.xml 文件的部分内容转换为 CSV。它不会收集传递依赖项,也不会收集下载 URL 或许可证信息。 - Enwired
3个回答

5

我需要名称和版本信息,这对我来说是解决方案。

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
这提供了一些信息,但并非我所寻找的完整数据集。我还需要下载URL、许可证和许可证URL都在同一行上。site:site命令生成了这些数据,但它们分散在报告的不同部分中,不能简单地使用sed进行过滤。 - Enwired

2
除了koppor's answer提供的获取每个依赖项的groupId:artifactId:version元组的简洁而简单的解决方案之外,您可以使用mvn dependency:purge-local-repository来强制重新下载Maven依赖项。
在该过程中,已解析依赖项的URL将写入控制台输出。您可能可以使用-DoutputFile将该命令的输出重定向(就像dependency:list一样)。
请注意,根据您分析单个项目还是完整项目结构,您可能需要将-DappendOutput设置为true。
检索许可证和许可证URL要困难得多,因为这不是必需信息。我能想象到的最简单的方法是实际上下载依赖项的jar和pom文件。 POMs可能包含许可证信息,如果没有,就需要分析jar文件。

1
没有现成的工具可以生成依赖和许可证的CSV列表。现有的工具mvn dependency:listmvn site:site将提供数据,但不是CSV格式。
原始答案: mvn dependency:list是您需要的maven插件和命令。它有很多选项,但我认为没有任何选项可以生成CSV。您将不得不自己将输出转换为CSV。这不应该太难。快速搜索发现this example有人已经为您提供了部分需要的内容。

这将列出所有名称和版本,但不显示下载位置或许可证。我认为使用project-info-reports:dependenciessite:site可以提供所有必要的信息,但是分散在html文件的多个部分中。 - Enwired
在这种情况下,答案是“不行”。我不知道有任何东西可以做到这一点。你需要提高你的XSLT技能。 - Paul Hicks
不幸的是,似乎没有其他人有解决方案!可以使用XSLT从site:site生成的HTML中提取数据,但我不会这样做。现在,我只会手动创建我的CSV文件。也许有一天,我会基于生成site:site报告的代码编写自定义Maven插件。这似乎比使用XSLT更直接,但我还没有准备好尝试它。 - Enwired

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接