在maven项目中仅安装更改的模块并仅更新更改模块的版本号

Installing only changed modules in maven project and updating only changed modules' version number

首先对长标题感到抱歉。我正在开发一个 multi-module Maven 项目。目前,项目只有 1 个版本,即 parent 版本。此外,制作 "mvn install" 需要很长时间,因为所有模块都是一个一个安装的。我的目的是仅安装更改的模块以及依赖于它的模块。然后我想更改 modules-which 的版本是 parent pom- 中已更改的属性。

到目前为止,我通过以下命令更改了文件(我的目的是通过命令行获取提交 ID,而不是获取相对于 HEAD 的差异,但出于开发目的,HEAD 没问题):

git diff HEAD | grep '^diff --git [A-Za-z0-9 ]*' | cut -d ' ' -f 3 | cut -c 3-  

获取更改文件的相对路径(根据项目的parent目录)。有了这些信息,我检测到更改的模块,在 parent pom.xml 文件中更改它们的版本(它们在 parent 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 没有评估 parent pom,因此不理解:

com.xyz.bla:bla-some_other_bla:${bla-someother-bla-version}

意味着它无法在 child pom 上解析版本 属性,因此无法在本地存储库中找到 jar 并且无法完成安装。

我想知道这种方式是否是实现我想要实现的目标的好方法,以及如何解决这个依赖问题。如果你两者都知道,那么请说明两者,因为我完成工作的时间有限,我可以假设当前的解决方案:)

备注:

祝一切顺利。

多模块构建的想法是所有模块只有一个版本号,因为所有模块将同时发布。

你可以改进它,只构建那些已经改变的模块,这些模块可以通过 this. And also this might help 实现,特别是 属性 可以用作版本号。