使用Maven和可能的Aether进行复杂的依赖性解析 - 如何?

时间:2012-06-15 12:31:56

标签: maven maven-plugin dependency-management aether

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

我的想法如下:

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

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

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

所以,问题是:我对如何实现目标的想法是正确的吗?我能用Aether吗?如果是,我该怎么办?或者我不得不求助于Maven 2和Aether的混合? (我尝试了一下,但SNAPSHOT版本和时间戳SNAPSHOT版本之间的差异有点麻烦)

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

1 个答案:

答案 0 :(得分:0)

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

  1. MavenProject
  2. 获取模块列表
  3. 获取他们的依赖
  4. 逐个循环浏览并使用com.jcabi.aether.Aether
  5. 解决它们

    Maven 3应该可以正常使用