【发布时间】:2016-03-03 11:32:18
【问题描述】:
我有一个大型的多模块 maven 项目,它有大量的依赖项。我想生成一个完整的、经过重复过滤的第三方依赖项列表(即所有不使用项目组 ID 的依赖项)。
我已尝试为此目的使用mvn dependency:list -DexcludeGroupIds=org.example.projectx,但似乎无法将输出聚合到单个列表中。当我从项目根命令行运行命令时,我得到如下输出:
[...]
[INFO] ------------------------------------------------------------------------
[INFO] Building ProjectX: ModuleA - Datatypes 4.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:list (default-cli) @ projectx-moda-datatypes ---
[INFO]
[INFO] The following files have been resolved:
[INFO] org.slf4j:slf4j-api:jar:1.7.10:compile
[INFO] org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] junit:junit:jar:4.12:test
[INFO] com.google.guava:guava:jar:18.0:compile
[INFO]
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building ProjectX: ModuleB - Binary 4.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:list (default-cli) @ projectx-modb-binary ---
[INFO]
[INFO] The following files have been resolved:
[INFO] org.slf4j:slf4j-api:jar:1.7.10:compile
[INFO] com.google.guava:guava:jar:18.0:compile
..etc,用于每个子模块。这不仅不是一个列表(而是每个子模块的单独列表),而且您可以看到它包含重复项。此外,我感兴趣的实际输出隐藏在其他 Maven 输出(下载消息等)的洪流中。
-DoutputFile=<file.txt> 选项也没有提供解决方案。从我的项目根目录运行mvn dependency:list -DoutputFile=deps.txt 的结果不是列出所有依赖项的单个文件,而是多个单独的文件,每个子模块目录中都有一个。
我当然可以将 maven 控制台输出重定向到文件 (mvn [options] > output.txt) 并尝试在 vi 中进行一些巧妙的正则表达式以将其过滤到我想要的列表中。但是,我希望有一种方法可以只使用 Maven 来获得我需要的东西,或者使用依赖插件或其他一些我不知道的报告插件。
【问题讨论】:
标签: java maven maven-3 maven-dependency-plugin