idea创建父子结构的项目,标准过程。
第一步
新建项目,选择pom
项目。不要选择Spring Initializr
。这一步很重要,一定不能错在这一步。
第二步
自定义项目名和groupId,artifactId,版本号
第三步
删除生成的src
目录,在pom文件中加入<packaging>pom</packaging>
第四步
在项目里新建文件夹son-web
,这个建议与子模块名称一致。
创建子项目,选择Spring Initializr
。
编辑并适配自己项目
Content root要选择你刚才新建的文件夹
将刚刚新建的子项目的如下依赖剪切到父项目的pom
文件中
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>1.8</java.version>
</properties>
父项目中继续添加
<dependencyManagement>
<dependencies>
这里加入依赖
</dependencies>
</dependencyManagement>
将子项目的依赖复制到上面的 <dependencies>中。
这里需要强调的是 dependencyManagement
标签的作用:统一管理整个项目的依赖及版本,子项目需要用到时,只需要引入依赖而不需要处理版本。相当于整个项目的依赖都交给dependencyManagement
管理,建立依赖池子,子项目需要时就从里面取。所以版本号不应该在子项目出现。
你会发现,在子项目的pom中从父项目拿到的依赖会有箭头,可以跳转到父项目的pom依赖位置。
在子项目的pom
文件中标识父项目,在pom
中添加如下:
<parent>
<groupId>org.example</groupId>
<artifactId>parent-son</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
在父项目pom中标注model
<modules>
<module>son-web</module>
</modules>
到这里,第一个子项目就建好了,父项目也定义好了。
建第二个子项目
由于我们在第一个子项目选择了Spring Initializr
,这里包含了Springboot
的启动类,所以第二个子项目不需要选择Spring Initializr
。
此时新建model选择pom
需要注意的是,parent
的groupId=org.example
,artifactId=parent-son
, 那么子项目的
groupId
应该为父项目的groupId + artifactId
,这个需要去理解groupId
和artifactId
的概念,这是细节,但是不容忽视。