Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 如何处理特性分支中的内部maven依赖关系_Git_Maven_Dependencies_Branch_Versioning - Fatal编程技术网

Git 如何处理特性分支中的内部maven依赖关系

Git 如何处理特性分支中的内部maven依赖关系,git,maven,dependencies,branch,versioning,Git,Maven,Dependencies,Branch,Versioning,我们的产品由同一Git存储库中的不同模块组成。假设我们有一个“核心”,它对“api”具有maven依赖性 现在,当我们在处理一个特定的特性/错误修复分支时,我们正在从它运行构建,以便测试可以使用它 来自所有分支的所有工件最终都位于相同的Maven存储库中,具有相同的版本和分类器。这些模块不是一起构建的。因此,“api”可能在上午生成,“核心”可能在下午生成 我们现在的问题是,如果在这两者之间存在构建,“核心”可能会从另一个分支获取“api”快照构建 我想这是一个常见的问题,团队与我们的设置类似

我们的产品由同一Git存储库中的不同模块组成。假设我们有一个“核心”,它对“api”具有maven依赖性

现在,当我们在处理一个特定的特性/错误修复分支时,我们正在从它运行构建,以便测试可以使用它

来自所有分支的所有工件最终都位于相同的Maven存储库中,具有相同的版本和分类器。这些模块不是一起构建的。因此,“api”可能在上午生成,“核心”可能在下午生成

我们现在的问题是,如果在这两者之间存在构建,“核心”可能会从另一个分支获取“api”快照构建

我想这是一个常见的问题,团队与我们的设置类似

我想说的是,解决这个问题的方法是使Maven在分支之间的坐标是唯一的,或者使用一个特殊的分类器,或者直接在版本中使用一个特殊的后缀


我应该遵循哪种方法?

根据我的经验,这通常不是问题,因为项目通常不会将来自功能分支的构建放在共享Maven repo中

无论何时更新长期存在的分支(并且对该分支的更新应该是一致的),都应该使用构建服务器来重建。听起来你在使用gitflow;在这种情况下,您将在每次更新
master
时进行生产构建,并在每次更新
develop
时进行开发构建。您的
master
版本将有发布版本号,而
develope
版本将有快照版本号


从共享存储库中的功能分支生成有什么用?就这点而言,让构建服务器参与到特性分支中有什么用呢?您的开发人员可以在本地构建和部署以测试功能分支(包括在必要时更新其本地maven repo),并且在他们尝试推动合并以进行开发时,将触发CI构建并捕获他们错过的任何内容,对吗?

,这通常不是问题,因为项目通常不会将来自特性分支的构建放在共享Maven repo中

无论何时更新长期存在的分支(并且对该分支的更新应该是一致的),都应该使用构建服务器来重建。听起来你在使用gitflow;在这种情况下,您将在每次更新
master
时进行生产构建,并在每次更新
develop
时进行开发构建。您的
master
版本将有发布版本号,而
develope
版本将有快照版本号


从共享存储库中的功能分支生成有什么用?就这点而言,让构建服务器参与到特性分支中有什么用呢?您的开发人员可以在本地构建和部署以测试功能分支(包括在必要时更新其本地maven repo),一旦他们尝试推动合并以进行开发,这将触发CI构建并捕获他们错过的任何内容,对吗?

如果您真的想从不同的功能分支构建,在版本号中添加其他术语,如
1.2.3-feature1-SNAPSHOT
。这表明您确实构建了同一工件的不同版本,这也确保了您永远不会在同一项目中添加两个“相同”工件作为依赖项

另见


如果您确实想从不同的功能分支进行构建,请在版本号中添加其他术语,如
1.2.3-feature1-SNAPSHOT
。这表明您确实构建了同一工件的不同版本,这也确保了您永远不会在同一项目中添加两个“相同”工件作为依赖项

另见