springboot创建子模块

本文以创建多模块的Dubbo项目为例,介绍Spring Boot多模块项目创建方法。开发环境为Win 7,编辑器是Intellij IDEA,Java版本1.8。详细说明了父模块和子模块的创建步骤,还提及了groupId等参数填写规范及pom.xml文件配置。

1 多模块项目创建

 

因为本系列的下一篇是《Spring Boot集成Dubbo》,所以本章就以创建多模块的dubbo项目作为示例。示例中的开发环境是Win 7,编辑器是Intellij IDEA,Java版本是1.8。

 

1.1 父模块创建

 

首先我们在IDEA中创建一个spring boot工程作为父项目。

 

一、在界面左上角选择File->New->Project后,选择Spring Initializr,默认使用的Java版本是1.8。

 

 

二、点击Next,进入下一步,可以设置项目的一些基本信息。

这里我们先来温习下groupId、artifactId、package这三个参数的一般填写规范。

groupId和artifactId统称为“坐标”,是为了保证项目唯一性而提出的。groupId是项目组织唯一的标识符,实际对应JAVA的包的结构,ArtifactID是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。groupId一般分为多个段,一般第一段为域,第二段为公司名称。举个apache公司的tomcat项目例子:这个项目的groupId是org.apache,它的域是org,公司名称是apache,artifactId是tomcat。包结构package最好是以groupId.artifactId打头的。

因为后续打算将“代码学习和实践”写成一个系列的文章,文中演示的工程都作为该工程的子模块,所以这里项目名Name就填写deer。

这里是个人练习的项目,不涉及公司名,但groupId、artifactId、package参数的填写,还是尽量按照上面的规范来填写,这里package就直接用groupId.artifactId。如下所示:

注意:打包地址不能重复(不能在deer下在进行打包,只能在jy下打包)

三、点击Next,进入下一个选择dependency的界面,作用是在pom中自动添加一些依赖,在项目开始时就下载。这里我们暂时不勾选任何依赖。

四、点击Next,进入下一个界面,填写工程名,并选择工程所在目录。填写完成后,点击Finish,即可创建一个spring boot项目。

1.2 创建子模块

一、在上面创建好的deer工程名上,点击右键,选择New–>Module,进入New Module页面。

该模块为deer项目的子模块deer-core,打包路径不能和deer的打包路径一样。

 

二、点击Next到填写项目名的界面。(Content root和Module file location需要加一级目录 — deer-core,不然会覆盖父项目)

三、创建另一个deer-admin,步骤参照上步。

 

四、以上3个模块创建完成之后,整个项目的目录结构如下图所示。

我们把下图选中的无用的文件及文件夹删掉,包括三个模块的mvnw、mvnw.cmd文件及.mvn文件夹,还有父模块的src目录,因为此处的父模块只做依赖管理,不需要编写代码。

到这里,一个父模块和两个子模块都创建完成啦~~

五、配置deer,deer-admin,deer-core的pom.xml文件使它们之间维系父子关系

deer的pom.xml文件。

POM是最简单的打包类型。不像一个JAR,SAR,或者EAR,它生成的构件只是它本身, 项目里没有java代码,也不执行任何代码,只是为了聚合工程或传递依赖用的。

 

deer-admin,deer-core的pom.xml文件

 

### 使用 Spring Boot 创建多模块 Maven 或 Gradle 项目 #### 多模块 Maven 项目结构 为了创建一个多模块的 Maven 项目,可以按照如下方式设置: 1. **父级 POM** 在 `pom.xml` 中定义父级 pom 文件,该文件位于项目的根目录。 ```xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>multi-module-project</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <!-- 定义子模块 --> <modules> <module>api</module> <module>service</module> <module>webapp</module> </modules> <!-- 继承自 spring boot starter parent --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>${springBootVersion}</version> <relativePath/> <!-- lookup parent from repository --> </parent> </project> ``` 此配置继承了 `spring-boot-starter-parent` 并指定了多个子模块[^3]。 2. **子模块** 每个子模块都有自己的 `pom.xml` 文件。例如,服务层 (`service`) 可能看起来像这样: ```xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.example</groupId> <artifactId>multi-module-project</artifactId> <version>1.0-SNAPSHOT</version> </parent> <artifactId>service</artifactId> </project> ``` #### 多模块 Gradle 项目结构 对于 Gradle 来说,同样支持多模块架构,并且其灵活性允许更加简洁的配置。 1. **settings.gradle** 首先,在项目的根目录下的 `settings.gradle` 文件中声明所有的子项目: ```groovy include 'api', 'service', 'webapp' ``` 2. **build.gradle (根)** 接着,在根级别的 `build.gradle` 文件里应用必要的插件并指定版本管理策略: ```groovy plugins { id 'java' } subprojects { repositories { mavenCentral() } } ``` 这里通过 `subprojects {}` 块来统一配置所有子项目的公共属性[^5]。 3. **各子项目的 build.gradle** 每一个子项目也有自己独立的 `build.gradle` 文件来进行特定于该项目的任务和依赖项设定。比如 Web 应用程序可能会包含这样的内容: ```groovy plugins { id 'org.springframework.boot' version '${springBootVersion}' id 'io.spring.dependency-management' version '1.0.9.RELEASE' id 'java' } dependencies { implementation project(':service') implementation('org.springframework.boot:spring-boot-starter-web') } ``` 这种布局不仅有助于保持代码库整洁有序,而且使得各个部分能够被单独开发测试而不影响整体稳定性[^4]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值