我正在尝试构建一个补丁分支,我在其中构建一个父(快照)和一个子(也是一个快照)作为聚合pom中列出的模块。
Maven发现每个人都依赖于父,并且首先构建它, BUT 当我构建到干净的存储库时,它不会使用新构建的父。
在之后立即构建,在同一个存储库中,已经安装了构建的Parent 2.2.5-快照,一切正常,并且修补后的父级在其子级中使用。
问题是CI构建总是建立在一个干净的仓库上,因此,我们使用的父级是全局存储库中的父级,而不是本地存储库中的父级。
这是错误的pom.xml,maven设置还是maven算法中的错误?
我试过
mvn clean install -nsu
但徒劳无功。
答案 0 :(得分:1)
如果您使用选项-nsu
,则表示:
-nsu, - no-snapshot-updates抑制SNAPSHOT更新
永远不会使用最新的快照。要强制maven这样做,你应该使用:
mvn -U clean install
代替。
答案 1 :(得分:0)
事实证明,主要问题是我们和其他人一起建造父母pom。 Maven 首先下载所有父母,然后解决依赖关系。
因此,如果这是一个干净的版本并且尚未部署此版本的父版本,那么将父项与其余项目作为模块一起列出是不正确的(孩子们会看到它的旧快照)。
解决方案1: 使用relativePath指向分支父级。如果您没有非常复杂的模块层次结构,这是更好的解决方案。
解决方案2: 首先构建并部署补丁的父级,以便所有孩子都可以看到它,因此他们使用彼此的正确版本。< / p>