mvn依赖插件需要安装jar吗?

时间:2011-03-17 11:58:32

标签: maven maven-plugin maven-dependency-plugin

在多模块项目中运行mvn依赖项:copy-dependencies时,似乎mvn希望jars已经安装在.m2 / repo中。也许我错过了一些东西,但我无法弄清楚它的意义......
这个问题有点类似于Maven: Why does it need dependency modules' .jars for `mvn initialize`?,但它更依赖于依赖插件(我猜......)而且上面提到的问题没有一个好的答案,至少没有一个可以帮助我......

我有一个多模型项目,其中modA取决于modB
现在我想运行

mvn dependency:copy-dependencies -am -pl modA

这应该复制modA的所有依赖关系以及它所依赖的所有模块,例如modB

问题是,如果.m2 / repo不包含modB的jar,则插件失败...为什么?
有趣的是,如果我只是在.m2 / repo /在适当的位置创建一个空的“jar”文件,它就足以让插件成功,所以这只是证明了它甚至没有看到jar的内容,而是它仍然需要它到位。 WTF?......

第一个问题 - 为什么?
第二个问题 - 如何在不必真正生成罐子或“触摸”它们的情况下绕过问题? (我有很多而且不实用......)

更新:OMG,我刚刚意识到我忘了添加一个有价值的部分...我不希望复制modB所以我实际上从命令中排除了它的工件ID,所以它实际上是:

mvn dependency:copy-dependencies -am -pl modA -DexcludeGroupIds=mod.b.group.id

我甚至尝试过:

mvn dependency:copy-dependencies -am -pl modA -DexcludeArtifactIds=modB

所以,如果我没有这样做那么它总是有意义的插件会在回购中寻找modB,但由于modB被排除在外,所以我预计插件不需要modB.jar存在。
哦,也许这个问题只需要一个bug报告......

1 个答案:

答案 0 :(得分:0)

为什么呢?我想这就是命令应该做的事情 - 复制依赖关系并且如果它们不存在则失败。该插件不关心工件的完整性。

绕过此选定组/项目的一种方法是使用插件的excludeGroupIdsexcludeArtifactIds参数。