0

在多模块项目中运行 mvn dependency:copy-dependencies 时,似乎 mvn 期望 jar 已安装在 .m2/repo 中。也许我遗漏了一些东西,但我无法弄清楚其中的意义......
这个问题有点类似于Maven:为什么它需要依赖模块的 .jars 用于 `mvn initialize`?但它更具体到依赖插件(我猜......)并且提到的问题没有一个很好的答案,至少没有一个对我有帮助......

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

mvn dependency:copy-dependencies -am -pl modA

这应该复制 modA 的所有依赖项及其依赖的所有模块,例如 modB 的所有依赖项

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

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

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

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

我什至尝试过:

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

因此,如果我没有这样做,那么插件将在 repo 中查找 modB 是有道理的,但由于 modB 被排除在外,所以我希望插件不需要 modB.jar 存在。
哦,好吧,也许这个问题只需要一个错误报告......

4

1 回答 1

0

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

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

于 2011-03-17T15:14:53.333 回答