如何以可读格式将Maven依赖项打印到文件中?

why*_*ent 32 maven build-dependencies

我正在处理一个包含许多pom.xml文件的大项目,我需要指定我使用的所有库.这意味着我需要递归读取pom.xml文件并获取groupId,artifactId,scope和version.我检查了mvn依赖:树但我找不到以可读格式将其打印到文件的方法.我看到appendOutput但我没有看到如何在cmd中使用它的示例.我在Linux中看到了一些解决方案,但我只能访问Windows XP.

AC *_*art 69

这可以(至少现在)使用dependency:tree插件的命令行选项来完成.

尝试:

mvn dependency:tree -Doutput=/path/to/file
Run Code Online (Sandbox Code Playgroud)

参考:Maven依赖插件页面

您只询问了"可读"格式,但您也可以使用各种选项传递-DoutputType参数.另请注意我安装的版本,我收到以下警告:

[WARNING] The parameter output is deprecated. Use outputFile instead. 
Run Code Online (Sandbox Code Playgroud)

因此,请考虑使用-DoutputFile =/path/to/file进行尝试

此外,我无法让-DoutputType参数给我除默认文本以外的任何内容,但没有机会玩它.因人而异.

  • 从 Maven 3.5.0 和 maven-dependency-plugin 2.8 开始,`-DoutputFile=/path/to/file.txt` 工作时没有警告。 (2认同)

Ana*_*esh 10

如果您在同一个 repo/project 下有多个模块,并且希望将所有模块的依赖关系放在一个文件中,以便能够区分一个构建和另一个构建的黑白,以查看某处是否发生了某些变化,您可以这样做

$project_dir> mvn dependency:tree -DoutputFile=<absolute_path_to_file> -DappendOutput=true
Run Code Online (Sandbox Code Playgroud)

例如

$project_dir> mvn dependency:tree -DoutputFile=`pwd`/mvn_dependency_tree.txt -DappendOutput=true
Run Code Online (Sandbox Code Playgroud)

https://maven.apache.org/plugins/maven-dependency-plugin/tree-mojo.html查看其他可用选项


Luc*_*tti 5

添加

<plugin>
    <groupId>org.apache.servicemix.tooling</groupId>
    <artifactId>depends-maven-plugin</artifactId>
</plugin>
Run Code Online (Sandbox Code Playgroud)

插件生成的classes/META-INF/maven/dependencies.properties文件具有易于解析的项目依赖关系。

产生的输出示例:

# Project dependencies generated by the Apache ServiceMix Maven Plugin
# Generated at: Mon Oct 10 17:43:00 CEST 2011

groupId = my.group.name
artifactId = my.artifact.name
version = 0.0.1-SNAPSHOT
my.group.name/my.artifact.name/version = 0.0.1-SNAPSHOT

# dependencies

junit/junit/version = 4.8
junit/junit/type = jar
junit/junit/scope = test

org.easymock/easymock/version = 2.4
org.easymock/easymock/type = jar
org.easymock/easymock/scope = test
Run Code Online (Sandbox Code Playgroud)


Pio*_*cki 5

在GNU/Linux上,我会这样做mvn dependency:tree > myFile.但是,如果您仅限于Windows,那么我将寻找用于流式传输命令输出的Windows语法.

根据这个网站(只是谷歌的最高结果),似乎Windows的控制台也使用>sign来将输出流定向到一个文件.所以你介意试试吗?