Java单体仓库:面向初学者的代码组织方式

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

引言:什么是单体仓库,Java开发者为何需要它?



想象一下,您正在编写一个大型Java应用程序:一个Web服务、一个用于数据库操作的库,以及一个独立的日志记录模块。传统上,每个组件都存放在各自的Git仓库中。但还有另一种方法——单体仓库 (monorepo)。这是一种策略,将整个项目的代码(甚至多个相关项目的代码)存放在一个统一的仓库中。



对于初学Java的开发者来说,单体仓库可能看起来不寻常,但它提供了重要的优势:

  • 统一的依赖版本——所有模块使用相同版本的库,从而消除冲突。
  • 简化的重构——在一个模块中更改API,会立即在所有依赖模块中可见。
  • 共享配置——一个配置文件用于lint工具、格式化工具和CI/CD。
  • 轻松起步——无需为小型项目配置多个仓库。


在本文中,我们将探讨如何使用流行的构建工具Maven和Gradle来组织Java单体仓库。您将学习如何构建文件夹结构、配置多模块构建以及避免常见错误。



主体部分



1. 单体仓库结构:从简单到复杂



正确的文件夹结构是成功单体仓库的基础。以下是Java项目的推荐模板:



my-monorepo/├── build.gradle           # 根构建文件(用于Gradle)├── settings.gradle        # 模块列表├── pom.xml                # 根POM文件(用于Maven)├── README.md├── .gitignore├── libs/                  # 公共库│   ├── common-utils/│   └── logging-framework/├── services/              # 微服务或应用程序│   ├── user-service/│   └── payment-service/└── tools/                 # 工具和脚本    └── code-generator/


每个模块都是一个独立的Java项目,拥有自己的pom.xml或build.gradle文件。根配置文件管理依赖关系和版本。让我们详细看看这两种方案。



2. 使用Maven的Monorepo:多模块项目



Maven原生支持多模块项目。创建一个根pom.xml文件,并指定模块:



<project>    <modelVersion>4.0.0</modelVersion>    <groupId>com.example</groupId>    <artifactId>my-monorepo</artifactId>    <packaging>pom</packaging>    <version>1.0.0</version>        <modules>        <module>libs/common-utils</module>        <module>services/user-service</module>        <module>services/payment-service</module>    </modules>

<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>3.2.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement></project>


在common-utils模块(文件夹libs/common-utils)中,创建自己的pom.xml,并引用父项目:



<project>    <parent>        <groupId>com.example</groupId>        <artifactId>my-monorepo</artifactId>        <version>1.0.0</version>    </parent>    <artifactId>common-utils</artifactId>        <dependencies>        <dependency>                

博客

书籍推荐