2016-04-22 65 views
0

我正在处理一个包含许多Maven模块的大型项目。现在,我必须确保构建失败时,在本地回购或新建的构建产品不可用。忽略来自远程Maven回购的文物

到现在为止,我在构建之前下载了所有必需的依赖关系,删除了将在本地回购库中新建的工件,并在离线模式下运行构建。

这是一个丑陋的解决方法,我知道这并不是最佳实践,但我没有其他选择。所以我想知道是否有更简单的方法可以忽略来自远程回购的文物,或者告诉Maven只使用新建的文物。

编辑:实施例

我有一个超级POM和2个模块的项目。

现在当前版本的超级pom是2.0.0-SNAPSHOT,但模块参考版本1.0.0。在这种情况下,构建应该失败。但实际上,它只是从远程回购下载1.0.0版本的超级POM,并在最坏的情况下打破了构建。

这是有问题的,因为我不是在控制回购,并且有些人因为我只在几个模块上工作而出现了一些奇怪的版本问题,因此我的版本多次打破。

+0

Mult模块构建?正在谈论模块间依赖关系还是其他依赖关系?可以举一个更详细的例子你的意思? – khmarbaise

回答

0

在我的工作环境中,我创建了单独的POM文件供开发人员和官方构建使用。

对于开发商来说,那里的POM指向,只能由开发本地在当地仓库的.m2可以创建用户特定组ID,使用类似com.mycompany.myproject.users。$ {用户名}这阻止开发人员可以从公司maven存储库中获取正式的工件。

使用官方建立的POMs com.mycompany.myproject作为groupId,以便他们构建和使用端到端的官方文物。

现在,如果开发人员需要官方和本地工件的组合,则可以像这样调整POM文件;然而,如果一个官方产品引入了一个下游依赖关系,那么您最终可能会遇到令人讨厌的依赖关系问题,而这个依赖关系也是您在本地构建的。问题是,类包装是相同的,Maven可能不会选择你期望的。