【发布时间】:2016-08-09 08:12:15
【问题描述】:
首先对长标题感到抱歉。我正在开发一个多模块 Maven 项目。目前,项目只有 1 个版本,即父版本。此外,制作“mvn install”需要很长时间,因为所有模块都是一一安装的。我的目的是仅安装已更改的模块以及依赖它的模块。然后我想更改已更改的模块版本(它们是父 pom 中的属性)。
到目前为止,我通过以下命令获取更改的文件(我的目的是通过命令行获取提交 ID,而不是获取相对于 HEAD 的差异,但出于开发目的,HEAD 很好):
git diff HEAD | grep '^diff --git [A-Za-z0-9 ]*' | cut -d ' ' -f 3 | cut -c 3-
获取更改文件的相对路径(根据项目的父目录)。有了这些信息,我检测到更改的模块,在父 pom.xml 文件中更改它们的版本(它们在父 pom 中设置为属性)
顺便说一句,我是通过一个 python bash 脚本来完成这一切的。
我想通过命令安装更改的结节:
mvn -pl module1,module2.. -amd install
我现在无法解决的是,对于某些模块,-pl 命令不起作用,因为我收到以下错误:
Failed to execute goal on project bla-bla: Could not resolve dependencies for project com.xyz.bla:bla-bla:jar:2.10.0:
当我在启用调试日志的情况下执行上述命令时,我意识到问题可能是 maven 没有评估父 pom,因此不理解:
com.xyz.bla:bla-some_other_bla:${bla-someother-bla-version}
意味着它无法解析子pom上的版本属性,因此无法在本地存储库中找到jar并且无法完成安装。
我想知道这种方式是否是实现我想要实现的目标以及如何解决此依赖问题的好方法。如果你都知道,那么请说明两者,因为我完成工作的时间有限,我可以假设当前的解决方案:)
注意事项:
我曾尝试使用https://github.com/nwiechmann/scm-changes-maven-extension,但未能成功。
mvn:release plugin :updateversions 不支持多版本更新,所以这可能不是一个选项。
一切顺利。
【问题讨论】:
标签: maven versioning multi-module