Maven不采用新建的快照,使用全局存储库

时间:2014-07-15 11:19:48

标签: maven snapshot

我正在尝试构建一个补丁分支,我在其中构建一个父(快照)和一个子(也是一个快照)作为聚合pom中列出的模块。

Maven发现每个人都依赖于父,并且首先构建它, BUT 当我构建到干净的存储库时,它不会使用新构建的父。

在之后立即构建,在同一个存储库中,已经安装了构建的Parent 2.2.5-快照,一切正常,并且修补后的父级在其子级中使用。

问题是CI构建总是建立在一个干净的仓库上,因此,我们使用的父级是全局存储库中的父级,而不是本地存储库中的父级。

这是错误的pom.xml,maven设置还是maven算法中的错误?

我试过

mvn clean install -nsu

但徒劳无功。

2 个答案:

答案 0 :(得分:1)

如果您使用选项-nsu,则表示:

  

-nsu, - no-snapshot-updates抑制SNAPSHOT更新

永远不会使用最新的快照。要强制maven这样做,你应该使用:

mvn -U clean install

代替。

答案 1 :(得分:0)

事实证明,主要问题是我们和其他人一起建造父母pom。 Maven 首先下载所有父母,然后解决依赖关系。

因此,如果这是一个干净的版本并且尚未部署此版本的父版本,那么将父项与其余项目作为模块一起列出是不正确的(孩子们会看到它的旧快照)。

解决方案1: 使用relativePath指向分支父级。如果您没有非常复杂的模块层次结构,这是更好的解决方案。

解决方案2: 首先构建并部署补丁的父级,以便所有孩子都可以看到它,因此他们使用彼此的正确版本。< / p>