背景

使用Idea 创建一个模块化的SpringBoot项目,但是发现Idea 创建父子项目的方式较Eclipse 较为不同,且Idea 创建的过程较Eclipse创建父子项目的过程复杂。
Eclipse 创建SpringBoot父子项目传送门

网上虽然有Idea创建SpringBoot父子项目,但是携带各种其他的功能,导致无法简单的搞懂如何创建。下面就一个例子进行说明一下。

构建简单SpringBoot父子项目

环境说明:jdk1.8
Idea 版本:2019.3
(1)打开Idea,如果是新安装的软件,不会有历史项目

(2)点击 “Create New Project”,进入一个新的项目的创建界面。父项目直接创建一个Maven项目即可

PS:不要勾选 “Create from archetype”
点击下一步。
(3)进入父项目的创建页面,填写项目名称和GoupId与坐标

PS:可以在上图红圈标注的地方修改项目的地址
(4)点击Finish 按钮,完成一个父项目的创建。
下图是点击Finish 创建好的项目在Idea 软件中打开的情况:

(5)在现有父项目的基础上新建SpringBoot子项目
在父项目的名称的位置右键鼠标:

(6)新建一个Module,进入新建页面。
子项目直接选择Spring initializr,创建一个SpringBoot项目

点击下一步,进入子项目的具体构建内容。

填写坐标后,点击下一步。
(7)进入新建项目选择插件,由于我们测试需要,所以直接简单的选择了web

点击下一步,可以更改项目名称和地址

可以看出,子项目的地址默认在父项目文件夹下。点击Finish完成子项目的创建。
(8)可以删除一些子项目不需要的文件,不删也行

P: 还有父项目的src文件夹,这个已经不需要了,所以可以直接删除

(9)经过 1-8 步的操作,我们创建了父子项目结构,但是这两个项目尚未实现父子关系。下面我们需要更改POM文件,来实现父子关系。

这里我们先粘贴出还没有改变关系之前的父子结构项目原有的POM 文件

  • 父项目:
<?xml version="1.0" encoding="UTF-8"?>
<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.codingdemo</groupId><artifactId>springboot-demo</artifactId><version>1.0-SNAPSHOT</version>
</project>
  • 子项目
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.2.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.codingdemo</groupId><artifactId>springboot-demo-redis</artifactId><version>0.0.1-SNAPSHOT</version><name>springboot-demo-redis</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

(10)首先将你认为子项目中是公共的部分拿到父项目中,包括spring-boot-starter-parent 和一些 properties 以及build 等公共配置

<!--1 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.2.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent>
<!--2 -->
<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties>
<!--3-->
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>

上面子项目中的配置文件都可以拿到父项目的POM文件中 。
(11)将父项目的坐标,复制到 子项目的父坐标中

 <parent><groupId>com.codingdemo</groupId><artifactId>springboot-demo</artifactId><version>1.0-SNAPSHOT</version></parent>

(12) 父项目 新增 pom
P:这个必须

(13)将子项目的moudle 关联到 父项目中

  <modules><module>springboot-demo-redis</module></modules>


(14)我们再来看下新的父子项目的 POM文件

  • 父项目
<?xml version="1.0" encoding="UTF-8"?>
<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>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.2.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.codingdemo</groupId><artifactId>springboot-demo</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><modules><module>springboot-demo-redis</module></modules><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
  • 子项目
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.codingdemo</groupId><artifactId>springboot-demo</artifactId><version>1.0-SNAPSHOT</version></parent><groupId>com.codingdemo</groupId><artifactId>springboot-demo-redis</artifactId><version>0.0.1-SNAPSHOT</version><name>springboot-demo-redis</name><description>Demo project for Spring Boot</description></project>

读者可以对比一下,没有改造之前的POM文件,有什么差距
(15) 我们来验证一下,父子项目是否成功创建
我们在子项目中新增一个Controller ,进行一下简单Web访问,查看是否成功

package com.codingdemo.springbootdemoredis.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@GetMapping("/hello")public String hello() {return "hello world!";}
}

启动一下SpringBoot 启动类,输入网址

可以看到能够成功访问,我们已经成功搭建好简单的父子SpringBoot项目
(16) 如果我修改 Controller的方法,需要重启项目,这样比较麻烦。下面是如何配置热部署SpringBoot项目

SpringBoot项目的热部署

(1)在上面现有的父子SpringBoot项目中,在父项目POM文件增加热部署的devtools依赖。

<!-- 热加载 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional><scope>true</scope></dependency><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><!--热加载必须配上以下内容--><configuration><fork>true</fork></configuration></plugin></plugins></build>

(2) 我们可以在配置文件中设置devtools

### 热部署配置
spring.devtools.restart.enabled=true
spring.devtools.restart.additional-paths=src/main/java
spring.devtools.restart.poll-interval=1s
spring.freemarker.cache=false

(3)如果修改了Controller的函数但是还是没有热加载,可能是由于你是新的项目需要设置开启自动编译

P:勾上
重启项目后,然后再次修改文件后,便可以看到开始热部署了

Idea 创建简单的SpringBoot 父子项目相关推荐

  1. idea 创建 简单的scala maven项目

    1.创建maven scala项目 2.maven配置 <properties><scala.version>2.11.8</scala.version><s ...

  2. Jenkins创建一键发布即父子项目

    需求:有时候一个项目的子系统会非常多,当需要发版的的时候一个一个点会很累,并且是Maven项目时会使有些打包工作重复进行,所以就需要一个整合的job来一键触发所有. 一.下载插件Parameteriz ...

  3. 创建一个简单的springboot项目demo

    springboot的核心功能: 1:起步依赖 2:核心注入; 创建一个简单的springboot项目demo步骤: 1:创建一个maven项目 2:pom.xml添加起步依赖 <parent& ...

  4. IDEA 创建SpringBoot多级Maven父子项目

    IDEA 创建SpringBoot多级MAVEN父子项目 一.环境准备 1.JDK安装配置 2.MAVEN安装配置 二.项目搭建 1.创建顶级Maven项目 附: 一级项目完整`pom.xml`配置 ...

  5. 最简单最详细的SpringBoot入门项目——HelloWorld

    最详细的SpringBoot入门项目--HelloWorld 关于SpringBoot的介绍以及优点这里就不说了,想了解的可以直接点击这里 Spring Boot百度百科 接下来我们直奔主题,开始用S ...

  6. Eclipse创建Maven父子项目

    1.项目需求 今天就介绍在Eclipse中创建Maven父子项目,举一个例子,需要建立如下关系的Maven项目. 2.构建一个父级maven项目 新建一个Maven项目,如下图所示: 选择默认工作空间 ...

  7. eclipse maven项目 class类部署不到tomcat下_Springboot介绍以及用Eclipse搭建一个简单的Springboot项目教程

    简述 本文主要介绍Springboot以及用Eclipse搭建一个简单的Springboot项目. Springboot简介 Springboot是由Pivotal团队提供的全新框架,其设计目的是用来 ...

  8. springboot(一):构建最简单的springboot项目

    springboot应该是在spring体系基础上发展起来的,使用springboot,可以快速构建开发项目,并快速集成相关组件(很多开源的组件都有springboot的实现了),有人说它的设计理念为 ...

  9. 【项目实战】 ---- 简单整合SpringBoot + MyBatis + Themyleaf小项目

    简单整合SpringBoot + MyBatis + Themyleaf小项目 一.项目环境搭建① 二.数据库表设计及项目环境② 三.图片验证码功能 四.用户注册功能 五.用户登录功能 六.员工的查询 ...

最新文章

  1. 交叉验证的意义和目的_干货:详解原料药的工艺验证
  2. Aix6.1安装openssh
  3. linux 查端口 三种,Linux查看端口常用的三种用例
  4. redhat替换yum源时redhat.repo无法删除或禁用的问题
  5. WPF效果(GIS三维续篇)
  6. OpenSSL原理与实现
  7. Pytest Hooks方法之pytest_collection_modifyitems改变测试用例执行顺序
  8. pg 定时删除_定时删除网站文件
  9. 互联网常见34个术语解释
  10. 【组合逻辑电路】——通用译码器
  11. Q50 数组中重复的数字
  12. vue——评论的展开全文和收起
  13. 如何可以同时登录多个账户:无痕模式的使用
  14. iconv 库编译流程
  15. 省流版-38号车评中心历史车评文字汇总
  16. 腾讯正式推出密码保护卡,貌似对火狐用户重视不够
  17. Selenium.Chrome相关配置及用法
  18. 解决找不到pandas问题
  19. 翻译:SWFObject 2.0官方文档(用来做flash的js)
  20. 如何取消共享计算机管理员权限设置密码,Win7旗舰版系统共享文件夹设置密码如何设置...

热门文章

  1. cocos 制作动态生成内容的列表_零代码工具,让你在线轻松制作交互内容!
  2. 底层实现红黑树_图解:红黑树
  3. oracle基本的操作命令,oracle命令基本操作
  4. [转载] java虚拟机 jvm 出入java栈 栈空间内存分配
  5. 在Linux中制作实用程序(MakeFile)
  6. c语言单片机彩灯程序设计,用C语言实现键控彩灯系统
  7. java分数表示_表示Java分数的最佳方法?
  8. java项目没有bin_WebAPI项目似乎没有将转换后的web.config发布到bin文件夹?
  9. vim中的jk为什么是上下_JK轮胎的完整形式是什么?
  10. python insert_Python列表| 带示例的insert()方法