能否打包Maven公共依赖为starter kit,实现多团队Java项目依赖统一?
Java项目统一依赖与Starter Kit实现方案
完全可以通过Maven的依赖管理机制和自定义starter来实现团队依赖的统一化,下面是两种实用方案:
方式一:创建公共依赖管理POM
这是最基础的统一方式,适配所有Java Maven项目:
- 新建一个Maven项目,将
<packaging>设为pom(仅做依赖管理,不生成可执行jar) - 在这个POM的
<dependencyManagement>节点下,统一声明团队所有常用依赖的版本号,包括Spring Boot、ORM框架、工具类等 - 团队内的项目直接继承这个公共POM,或者通过
<dependencyManagement>引入它,后续项目里引用依赖时无需指定版本,自动使用统一配置的版本
公共依赖管理POM示例:
<groupId>com.yourteam</groupId> <artifactId>team-common-dependencies</artifactId> <version>1.0.0</version> <packaging>pom</packaging> <dependencyManagement> <dependencies> <!-- 引入Spring Boot官方依赖管理 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.7.15</version> <type>pom</type> <scope>import</scope> </dependency> <!-- 自定义团队常用依赖版本 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3.1</version> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.20</version> </dependency> </dependencies> </dependencyManagement>
项目中引用方式:
要么通过<parent>继承:
<parent> <groupId>com.yourteam</groupId> <artifactId>team-common-dependencies</artifactId> <version>1.0.0</version> </parent> <dependencies> <!-- 无需指定版本,自动使用公共POM中配置的版本 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> </dependency> </dependencies>
要么在自己的<dependencyManagement>中引入(适合已有父POM的项目):
<dependencyManagement> <dependencies> <dependency> <groupId>com.yourteam</groupId> <artifactId>team-common-dependencies</artifactId> <version>1.0.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
方式二:自定义Spring Boot Starter(适合Spring生态项目)
如果你们的项目基于Spring Boot,可以把常用依赖、默认配置、甚至通用业务逻辑打包成自定义starter,实现“一键引入”:
- 新建Maven项目,
<packaging>设为jar - 在POM中加入
spring-boot-starter作为基础,再添加团队常用的业务依赖(比如web、数据库、日志等) - 可编写自动配置类,统一配置日志格式、数据库连接参数、全局异常处理器等
- 在
src/main/resources/META-INF下创建spring.factories文件,指定自动配置类的路径,让Spring Boot启动时自动加载配置
自定义Starter POM示例:
<groupId>com.yourteam</groupId> <artifactId>team-spring-boot-starter</artifactId> <version>1.0.0</version> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> </dependency> </dependencies>
项目中引入方式:
只要在项目POM中添加这个starter依赖,就能自动获取所有统一的依赖和配置:
<dependencies> <dependency> <groupId>com.yourteam</groupId> <artifactId>team-spring-boot-starter</artifactId> <version>1.0.0</version> </dependency> </dependencies>
后续维护建议
- 将公共POM或starter发布到团队内部的Maven仓库(比如Nexus),所有成员都能直接拉取
- 定期更新依赖版本,只需要修改公共模块的版本号,所有引用的项目同步升级即可
- 可根据业务场景拆分细分starter,比如
team-db-starter、team-web-starter,让项目按需选择引入
内容的提问来源于stack exchange,提问作者Robert
相关产品推荐
相关产品推荐

