2011-03-17 25 views
0

在多模块项目中运行mvn dependency:copy-dependencies时,似乎mvn预计jar已经安装在.m2/repo中。也许我失去了一些东西,但我无法弄清楚它的意义......
这个问题有点类似于Maven: Why does it need dependency modules' .jars for `mvn initialize`?,但它更具体到依赖插件(我猜...)和提到的问题没有'吨有一个很好的答案,至少没有帮助我......mvn依赖插件需要安装jar吗?

我在这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 

所以,如果我没有做到这一点则totatlly是有道理的,插件会寻找商业方法的回购,但由于modB被排除在外,所以我期望插件不要求modB.jar存在。
唉,也许这个问题只是需要一个错误报告...

回答

0

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

通过使用插件的excludeGroupIdsexcludeArtifactIds参数,可以绕过选定组/项目的一种方法。

+0

我很抱歉,但我忘了添加最有价值的作品...看看我的更新问题。我实际上从复制命令中排除了modB,但它没有像预期的那样工作。 – Ran 2011-03-17 19:18:29