gpt4 book ai didi

java - 如何获取 Maven 项目的外部依赖项的聚合列表?

转载 作者:行者123 更新时间:2023-11-30 03:09:11 24 4
gpt4 key购买 nike

我有一个大型多模块 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

..等等,对于每个子模块。这不仅不是单个列表(而是每个子模块的单独列表),而且正如您所看到的,它包含重复项。此外,我感兴趣的实际输出隐藏在其他 Maven 输出(下载消息等)的洪流中。

-DoutputFile=<file.txt>选项也不提供解决方案。运行结果mvn dependency:list -DoutputFile=deps.txt我的项目根目录中不是列出所有依赖项的单个文件,而是多个单独的文件,每个子模块目录中都有一个文件。

我当然可以将 Maven 控制台输出重定向到一个文件( mvn [options] > output.txt ),并在 vi 中尝试一些巧妙的正则表达式,将其过滤到我想要的列表。然而,我希望有一种方法可以仅使用 Maven 来获取我需要的东西,无论是使用依赖插件还是其他一些我不知道的报告插件。

最佳答案

您可以创建一个具有 pom 打包(即空)的附加模块(或外部 Maven 项目),并将您感兴趣的所有模块/项目作为依赖项。然后,在其上运行站点生命周期(即简单的 mvn site)。作为 target\site 下生成的网站的一部分,您将拥有:

  • 项目依赖项页面,为您提供直接依赖项(没有帮助,它将是您键入的依赖项列表)和传递依赖项(您正在寻找的内容),所有这些都与 GAV 合并在一个列表中,类型, 许可证.此外,您还将拥有完整的依赖项:树合并。
  • 依赖项收敛页面,提供有关相同传递依赖项及其跨其他依赖项的不同版本(如果有)收敛的真正有用的信息

或者,您也可以使用这个临时模块/项目在其上运行其他插件,例如您提到的 dependency:list 。这次您将获得您正在寻找的完整合并列表,尽管不是按字母顺序排列的,并且仍然难以阅读/重用,因为它将成为构建输出的一部分。相反,站点报告更容易阅读和处理(即将依赖关系表复制并粘贴到 Excel 文件中)。

作为引用,站点阶段将使用 Maven 项目信息报告插件。官方网站,here .

关于java - 如何获取 Maven 项目的外部依赖项的聚合列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33988300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com