由于目前的结构,我们的休息服务发展受到了阻碍和减缓。我试着在下面的图片中捕捉到它。对图表的一些解释
大多数代码都在v1或v2下。除资源、配置等之外,RestServiceA/B中没有太多的代码。所以,这里有一个紧密的耦合。
这种方法的问题是,对于给定的特性,比如v1,我需要构建jar,在RestServiceA中更新它的版本,然后进行测试。这需要对每一个新的提交重复。此外,我还需要发布自己的快照,以便在本地之外进行测试。
为了避免这种混乱,我正在考虑使用github子模块。然而,我的知识有限。如果下面的理解是正确的,如果我错过了任何明显的漏洞,如果选择这种方法的话,有人能帮忙吗?我愿意接受任何替代的方法。谢谢!

发布于 2021-04-14 16:43:55
我们有一个类似的项目结构,最后得到了以下解决方案。
v1-lifecycle, v1-utils, v2-lifecycle, v2-utils, prd-common, RestServiceA, RestServiceB, RestServiceCpom.xml使用Maven的<modules>标记在其树中包含所有其他模块: <modules>
<module>module1</module>
...
<module>moduleN</module>
</modules>父存储库的树结构如下所示:
├── module1
├── ...
├── moduleN
└── pom.xml这允许我们在提交之前构建和测试所有项目,在使用mvn test、mvn integration-test或mvn package发布工件之前对进行测试。
而且,当IDE打开所有代码时,这种体系结构使得跨模块重构更加容易。因此,我们直接从父存储库进行所有的开发。
我在一个只有两个模块的小例子上写了一个描述这个设置的文章。
我们正在开发的项目是Git X-模 (是Git子模块的替代品),它使用自己而不是Git子模块将模块存储库插入到父存储库的树中。
因此,通过将模块存储库插入父存储库,我的意思是使用以下两种方法:
若要在父存储库根目录创建module1.moduleN目录,请执行以下操作。
区别在于,对于Git子模块,父存储库根部的module1.moduleN目录将是指向它们相应的Git存储库的链接。例如,如果我们从父存储库中更改它们,则必须提交并推入每个单独的模块存储库中。
对于Git,它们都只是普通的Git目录,所以我们只能提交和推送一次,并且在服务器端将推送转换成单独的module1.moduleN存储库。我希望你明白这个想法。在这种情况下,分支也更容易。
关于最后一个问题,afaiu是需要的,因为您不想在提交更改之前测试它们。当拥有带有Maven模块的父存储库时,您可以只运行"mvn测试“、"mvn集成测试”,甚至可以在提交和推送之前对所有更改执行手动测试,因此,正如我所理解的,这个问题变得无关紧要了。
在最坏的情况下,开发人员可以直接在父存储库中创建一个新分支,并只推动该分支对其进行CI测试,然后合并分支(或者从分支中选择)--一切都很好。不需要临时上传到Maven。
https://stackoverflow.com/questions/67067465
复制相似问题