【问题标题】:Complex dependency resolution with Maven and possibly Aether - how?使用 Maven 和可能的 Aether 解决复杂的依赖关系 - 如何?
【发布时间】:2012-06-15 12:31:56
【问题描述】:

我正在尝试编写一个 Maven 插件,它执行以下操作:获取模块的所有依赖项并找出它的任何传递依赖项是否对当前模块的任何兄弟模块具有传递依赖项。

我的想法如下:

  • 获取模块的父级(仅 POM 父级),然后获取其所有模块,以查找当前模块的兄弟姐妹。
  • 获取模块的传递依赖项(但仅限于我们的组 ID)。
  • 对于每个传递依赖项,获取其传递依赖项并找出它们中的任何一个是否是同级模块之一。

我已经尝试过使用 Maven 2 风格,现在以 Aether 结束。 但是,我不确定是否可以用 Aether 做我想做的事情。

目前,我可以获得仅 POM 的父级(不是使用 Aether,而是使用 MavenProject),我可以获得传递依赖项,然后过滤它们以仅保留具有我们组 ID 的工件。我没有在 Aether 中找到相当于 Maven FilterArtifacts 的东西。

所以,问题是:我关于如何实现目标的想法是否正确?我可以只用Aether吗?如果是,我该怎么做?还是我必须使用 Maven 2 和 Aether 的组合? (我试了一下,但是SNAPSHOT版和时间戳SNAPSHOT版的区别有点麻烦)

无论如何,非常感谢任何帮助!

【问题讨论】:

  • 你能更新到 Maven 3 吗?它使用 Aether 来管理依赖项。你会更容易实现你的目标。
  • 是的,我正在使用 Maven 3 - 我认为 Aether 无论如何都不能与 Maven 2 一起使用。

标签: maven maven-plugin dependency-management aether


【解决方案1】:

您可以使用jcabi-aether 库(我是开发人员之一),它可以帮助您做您想做的事:

  1. MavenProject获取模块列表
  2. 获取它们的依赖项
  3. 一一循环并使用com.jcabi.aether.Aether解决它们

在 Maven 3 上应该可以正常工作

【讨论】:

    猜你喜欢
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多