子模块的Maven依赖关系管理的最佳实践

时间:2015-07-10 08:11:18

标签: java maven mobile automation

我们正在为移动应用程序构建测试自动化框架,我们使用 Maven 作为构建工具,也用于依赖管理。

描述:截至目前,我们已经有大约25个移动应用程序,我们正在规划maven项目结构,我们有框架模块和通用模块,其中包含将在所有应用程序中使用的自动化框架代码移动应用程序模块。

问题:随着移动应用程序数量的增加,我觉得选择下面的maven项目结构将难以成为主流,因为许多人将独立工作以自动化不同的移动应用程序,但他们需要将所有移动应用程序模块,以添加/编辑任何特定模块。

+-- root (pom type)
       +--- mobile app1 (jar type)
       +--- mobile app2 (jar type)
       .
       .      
       +--- mobile app25 (jar type)
       +--- framework module (jar type)
       +--- Commmon module (jar type)

解决方案解决方案:我们考虑构建一个包含框架和通用模块的框架jar,所有移动应用程序都依赖于框架jar。这里的问题是我们需要确保所有开发人员都使用相同的框架jar,框架中的任何更改都会对其依赖项产生影响。同样,每个模块都应该单独更新。

请建议我们在框架和相关模块方面使用更多可重用性和更少管理的最佳方法。

2 个答案:

答案 0 :(得分:2)

根据应用程序独立的信息,您决定的设置没有意义。使每个应用程序成为一个单独的项目(git存储库),并为libs(commons等)定义适当的依赖项。

答案 1 :(得分:1)

如果您想确保每个移动应用程序使用相同的框架和通用模块,您需要采用多模块方法。使用${project.version}依赖于框架和公共。

我建议您使用您提议的“解决方法”。它有几个优点:

  • 正如您所提到的,开发人员只需要检查他们实际正在处理的代码。
  • 只要您在(私有)Maven存储库中提供工件,他们就不需要自己编译框架和公共模块。
  • 框架和通用模块开发人员无需担心在更改代码后立即破坏移动应用程序。他们构建工件的新版本,并告诉每个移动应用程序开发人员更新依赖项。移动应用程序开发人员负责使他的移动应用程序使用新的框架和通用模块。