2011-08-31 240 views
2

我有一个多模块maven项目(maven 2.2.1)。 其中一个模块是maven插件。Maven 2 - 'mvn test'找不到内部项目插件依赖项

该插件绑定到另一个模块的编译阶段,并作为直接依赖项添加以触发模块构建的正确的反应器排序。

如果我在根模块上运行'mvn clean install',使用全新的本地存储库,一切正常(构建,测试,安装)。 (我确切的说我的项目的工件没有被部署到任何地方,只在本地机器的本地仓库中安装)。

但是,如果我删除我的本地存储库,并执行'mvn测试',插件模块报告缺失?而构建顺序是正确的,插件模块是在模块使用之前成功构建的?

是否有'maven-plugin'包装的maven模块的特殊处理? 我不明白为什么其他项目互用模块依赖关系正确解决,而不是这个特定的!

+0

我不明白你为什么需要更改反应堆生成顺序?订单不正确吗? – khmarbaise

+0

好吧,如果我简单地将插件绑定到我的客户端模块中,那么插件模块将在客户端模块之后构建,并且在中。 –

+0

这就是我所期望的,导致依赖是不同的。这是您通过<依赖关系>给出的内容,而不是在区域中给出的内容。最简单的解决方案是将maven模块上的放入需要的模块中。这应该处理反应堆订单将相应地改变。 – khmarbaise

回答

0

问题是,在将插件用作依赖项(或更好地成为生命周期的一部分)之前,必须先将Maven插件安装到本地存储库中。

+0

感谢您的回答;但是你能否指出我们需要明确指出这一点的maven文档? –

+0

我不能给你一个直接的链接,但我可以解释它。插件的问题在于,生命周期不像其他jar(库)那样使用生命周期,而是使用构建区而不是依赖区来表示它。 – khmarbaise

+0

这是有道理的。我会遵循这个轨道! –