如何在同一代码仓库中管理多个Spring Boot应用?

5
我们目前有几个使用Spring Boot的小型代码库,其中有一些重复的代码。我们希望将它们合并到同一个代码库中,并寻找最佳方法来实现。我们考虑要么有一个包含所有代码的src/main文件夹,然后我们有不同的main方法可以运行(基于这个教程),要么在同一个代码库中拥有独立的模块,然后有一个父模块包含共享逻辑。
如果您有类似的经验,请分享给我们。
2个回答

5

我已经有一个类似的开发环境设置了8个月了,我们团队不是很大(只有7人),但我们做得很好。

首先,我想澄清一点,这与Spring Boot没有太大关系,而是与您的构建和依赖管理技术有关,例如我的情况是Maven。

共享依赖和属性: 您可以使用父项目作为容器来承载共享相同依赖和属性的子项目。

您的容器Maven项目打包必须是<packaging>pom</packaging>。但请注意,此文件中出现的任何依赖项都将在子项目中继承,因此只保留必要的常见依赖项,否则您将需要在子项目Maven文件中拥有长列表的排除构件。

共享代码模块: 您还可以将常用代码分离到Maven项目中,并将其添加为提供的依赖项,供您想要的任何项目使用。

请考虑以下结构

/*parent project pom file : may have common spring starter dependencies and any other dependencies will be used all over the modules*/

<modules>
        <module>backend</module> <!-- backend will contain deployable modules which may reuse nodules of reusable code in commons module -->
        <module>frontend</module> <!-- backend will contain deployable modules which may reuse nodules of reusable code in commons module -->
        <module>commons</module> <!-- reusable code modules -->
</modules>

//backend module pom file : may have common spring starter dependencies and any other dependencies will be used all over backend modules

    <modules>
        <module>account-service</module> <!-- deployable account service module -->
        <module>ledger-service</module> <!-- deployable ledger service module -->
        <module>backend-commons</module> <!-- reusable code modules to be used in backend services modules -->
    </modules>

0
我建议不要将不同的项目合并到一个仓库中,这会在您的仓库历史记录中创建混乱,您将在分支处理方面遇到很多问题。
只需为每个Spring Boot项目使用单独的存储库,并将公共逻辑放入单独的项目(以及存储库)中。该项目将单独进行版本控制/构建/部署到您的构件存储库中。您的Spring Boot服务将作为JAR依赖项使用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接