我正在开发一个包含许多Maven模块的大型项目。现在,当本地仓库中没有构建工件或新构建时,我必须确保构建失败。
到目前为止,我在构建之前下载了所有必需的依赖项,删除了将在本地存储库中新构建的工件,而不是在脱机模式下运行构建。
这是一个丑陋的解决方法,我知道这样做不是最好的做法,但我别无选择。所以我想知道是否有一种更简单的方法可以忽略来自远程仓库的人工制品,或者告诉Maven只使用新建的人工制品。
编辑:示例
我有一个带有超级pom和2个模块的项目。
现在超级pom的当前版本是2.0.0-SNAPSHOT,但模块参考版本1.0.0。在这种情况下,构建应该失败。但实际上它只是从远程仓库下载了超级pom的1.0.0版本,在最坏的情况下会破坏构建。
这是有问题的,因为我不能控制回购,而且由于我只处理了几个模块而有多次破坏我构建的奇怪版本的人。
答案 0 :(得分:0)
在我的工作环境中,我创建了单独的POM文件供开发人员和官方版本使用。
对于开发人员,POM指向用户特定的groupID,这些groupID只能由开发人员在本地.m2存储库中本地创建,使用类似 com.mycompany.myproject.users。$ {username} 阻止开发人员从公司maven存储库中获取官方工件。
官方构建POM使用 com.mycompany.myproject 作为groupId,以便他们端到端地构建和使用官方工件。
现在,如果开发人员需要官方和本地工件的组合,POM文件可以这样调整;但是,如果一个官方工件引入了您也在本地构建的下游依赖项,那么最终可能会出现令人讨厌的依赖性问题。问题是类包装是一样的,Maven可能没有拿到你期望的包装。