2012-06-15 30 views
0

我试图编写一个Maven插件,它执行以下操作:获取模块的所有依赖关系,并确定它的任何传递依赖关系是否具有传递依赖关系到当前模块的任何兄弟模块。复杂的依赖解决与Maven和可能以太 - 如何?

我的想法是这样的:

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

我试过在Maven 2样式中做,现在以Aether结束。 但是,我不确定是否有可能用Aether做我想要的。

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

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

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

+0

你可以更新到Maven 3吗?它使用Aether来管理依赖关系。你会更容易地完成你的目标。 – Oliver

+0

是的,我正在使用Maven 3 - 我不认为Aether和Maven 2一起工作。 – eerriicc

回答

0

您可以使用jcabi-aether库(我的开发者之一),它可以帮助你做你想要什么:

  1. 获取模块列表从MavenProject
  2. 获取它们的依赖
  3. 使用com.jcabi.aether.Aether

环通逐一化解他们应该可以正常使用Maven 3