首页 / 知识
关于Java:大型Maven项目的存储库布局
2023-04-12 18:03:00

Repository layout for large Maven projects我有一个大型应用程序(约50个模块),使用的结构类似于以下内容:
我想将应用程序导入Maven和Subversion。经过一些研究,我发现有两种可行的方法可以解决此问题。 一种是使用树结构,就像前一种一样。这种结构的缺点是您需要进行大量的调整/修改才能使多模块报告与Maven一起正常工作。另一个缺点是,在Subversion中,标准的主干/标签/分支方法为存储库增加了更多的复杂性。 另一种方法是使用扁平结构,其中只有一个父项目,而所有模块,子模块和部分子模块都是父项目的直接子代。这种方法非常适合报表生成,在Subversion中更容易实现,但是我觉得这种方式会使我失去一些结构。 从长远来看,您会选择哪种方式?为什么? 我们有一个比较大的应用程序(160多个OSGi捆绑软件,其中每个捆绑软件都是Maven模块),并且我们继续学习的经验是,扁平化是更好的选择。层次结构中编码语义的问题是失去灵活性。今天100%说"通信"的模块明天可能会部分"服务",然后您需要在存储库中四处移动,这将破坏各种脚本,文档,参考资料等。 因此,我建议使用扁平结构,并将语义编码在另一个位置(例如,IDE工作区或文档)。 我已经用另一个示例详细回答了有关版本控制布局的问题,这可能与您的情况有关。 我认为您最好平整目录结构。也许您想为目录起一个命名约定,以便在查看所有项目时它们可以很好地排序,但是最终我认为不需要所有额外的层次结构。 假设您正在使用Eclipse作为IDE,那么无论如何导入它们,所有项目最终都将以平面列表形式出现,因此您实际上从其他子目录中不会获得任何收益。除了配置非常简单之外,没有所有额外的层次结构,这使得选择在我心中非常清晰。 您可能还需要考虑合并某些模块。我对您的应用程序或域一无所知,但似乎许多这些叶级模块可能更适合作为另一个顶级模块中的软件包或一组软件包使用。我全力以赴保持罐子的凝聚力,但是有时它可能会太过分。 |
最新内容
相关内容
python如何安装一个模块
python如何安装一个模块,培训,工具,模块,方式,文件夹,源码,本文,下面,以上,之后,下面介绍几种安装Python模块的几种方式easy_install方式先下python模块下载后怎么安装
python模块下载后怎么安装,培训,标准,模块,命令,参数,后面,语法,含义,之前,以上,python中的内置模块可以直接使用,如os模块,sys模块。使用第三python模块怎么使用
python模块怎么使用,标准,培训,代码,模块,文件,程序,开发者,函数,例子,效率,Python提供了强大的模块支持,主要体现在,不仅Python标准库中包含了pythontime模块报错怎么办
pythontime模块报错怎么办,时间,平台,培训,实时,术语,标准,单位,模块,线程,函数,python的time模块报错:time这个模块提供各种与时间相关的函数python如何下载安装模块
python如何下载安装模块,培训,标准,模块,命令,参数,后面,语法,含义,之前,以上,Python中的内置模块可以直接使用,如os模块,sys模块。使用第三方python导入模块时报错怎么办
python导入模块时报错怎么办,培训,时报,情况,信息,标准,项目,模块,路径,字符串,文件,经常在运行一些Python项目的时候会出现模板报错的情况,比pythontime模块怎么用
pythontime模块怎么用,时间,平台,培训,实时,单位,术语,标准,信息,作用,模块,python的time模块time这个模块提供各种与时间相关的函数。相关功python如何编写python模块
python如何编写python模块,培训,名称,网上,工作,模块,程序,内容,下面,事情,案例,其实网上Python教程挺多的,编写你自己的模块很简单,这其实就是python如何查看python模块
python如何查看python模块,培训,信息,代码,模块,以下,下面,以上,版本,链接,更多,python自身带有大量的模块,下面来说一下如何查看它们1、查看Ppython类、模块、包的概念及区别
python类、模块、包的概念及区别,概念,数据,培训,模块,名字,环境,基础,文件,函数,定义,类类的概念在许多语言中出现,是面向对象编程的基础,很容python模块能优化Python的运行速度
python模块能优化Python的运行速度吗?,代码,平台,培训,官网,环境,工作,系统,模块,程序,语言,今天介绍下Psyco模块,Psyco模块可以使你的Pythonpython序列化模块pickle和json的使
python序列化模块pickle和json的使用和区别,培训,数据,一致,字符串,数据类型,模块,文件,字典,区别,之间,这是用于序列化的两个模块:json:用于