【问题标题】:Installing only changed modules in maven project and updating only changed modules' version number仅在 maven 项目中安装更改的模块并仅更新更改的模块的版本号
【发布时间】: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并且无法完成安装。

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

注意事项:

一切顺利。

【问题讨论】:

    标签: maven versioning multi-module


    【解决方案1】:

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

    您可以改进它,只构建那些可以通过this 实现的已更改的模块。还有this might help,特别是可以用作版本号的属性。

    【讨论】:

    • 感谢您的回复。我向项目负责人询问了版本控制的问题,他说模块实际上是单独发布的,这就是他们希望它们具有不同版本号的原因。
    • 如果它们单独发布,这意味着多模块构建没有意义......
    猜你喜欢
    • 2011-08-09
    • 2017-01-18
    • 1970-01-01
    • 2017-01-19
    • 2013-04-04
    • 1970-01-01
    • 2017-06-21
    • 2011-05-21
    • 1970-01-01
    相关资源
    最近更新 更多