文前知识

  1. 子项目可以继承父项目的依赖, 前提是需要使用parent标签指定父项目
  2. 子项目可以单独引入依赖, 依赖只对当前子项目有效
  3. 子项目中没有页面打包方式可以为jar, 有页面打包使用war

创建父工程

就按正常创建springboot项目就行

把src文件夹删除,以下红框的都可以删除,.gitignore如果用不上git也可以删除

创建子工程

挑一个模块出来详细说,其他模块都是同样道理,就不赘述了。

右键项目新建Module

新建model模块存放各种对象。 注意最后的Package:开始会把sparrow_model也带上,我们把它去掉

创建完成后我们按以下几个步骤来:

  1. 把启动类删除
  2. 修改pom文件<parent>标签中内容改为我们自己建的父工程
  3. 标明打包方式为jar <packaging>jar</packaging>
  4. 添加这个模块所需要的依赖

接下来,先clean,再install

 【注意】:web模块的主程序类不要删除,作为全局的唯一入口

其他按上述步骤依次创建好

主程序所在模块

说一下主程序所在模块的不同点:

首先就是组件扫描,接口层肯定需要用到服务和实体类

这样我们在pom中引入另外两个模块,在使用其他模块的服务时就不会报未定义了。

然后添加打包信息

<!--多模块打包:只需在启动类所在模块的POM文件:指定打包插件 --><build><!-- 设置最终打包的名称--><finalName>sparrow-1.1</finalName><plugins><plugin><!--该插件主要用途:构建可执行的JAR --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><!--指定Main Class为全局的唯一入口--><mainClass>com.sparrow.web.SparrowWebApplication</mainClass></configuration></plugin></plugins><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes><filtering>false</filtering></resource><!--设置自己目录下的配置文件--><resource><!--下方resources的文件夹名字要和自己项目的文件夹名确认一致才行 很多人就是忽略了名字不一致 --><directory>src/main/resources</directory><includes><include>**/*</include></includes></resource></resources></build>

修改父工程

子模块都创建完成后,修改父模块的pom文件

  1. 添加<packaging>pom</packaging>
  2. 添加子模块信息
  3. 添加依赖管理,我这里随便加的

Maven中的dependencyManagement元素提供了一种管理依赖版本号的方式。在dependencyManagement元素中声明所依赖的jar包的版本号等信息,那么所有子项目再次引入此依赖jar包时则无需显式的列出版本号。Maven会沿着父子层级向上寻找拥有dependencyManagement 元素的项目,然后使用它指定的版本号。

服务测试

在sparrow_model中新增User类

@Data
public class User {private Integer id;private String name;
}

那么我在服务层想用的话,就要在sparrow_service的pom文件中加上

在sparrow_service中模拟了一下查询数据

@Service("userService")
public class UserServiceImpl implements UserService {@Overridepublic User getUserById(Integer id) {User user = new User();user.setId(1);user.setName("花无缺");return user;}
}

再把这个服务暴露给接口层,在sparrow_web中新增UserController

@RestController
@RequestMapping("/v1/user")
public class UserController {@AutowiredUserService userService;@GetMapping("/{id}")User getUserById(@PathVariable("id")Integer id){return userService.getUserById(id);}
}

直接启动主程序类,请求接口

打包部署

找到父工程,先clean,再package 

在文件夹中找到打包好的jar包

在这个jar的根目录下执行java -jar sparrow-1.1.jar

补充知识

jar包和war包的区别:

  1. war是一个web模块,其中需要包括WEB-INF,是可以直接运行的WEB模块;jar一般只是包括一些class文件,在声明了Main_class之后是可以用java命令运行的。
  2. war包是做好一个web应用后,通常是网站,打成包部署到容器中;jar包通常是开发时要引用通用类,打成包便于存放管理。
  3. war是Sun提出的一种Web应用程序格式,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织;classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean)可以打包成jar放到WEB-INF下的lib目录下。JAR文件格式以流行的ZIP文件格式为基础。与ZIP文件不同的是,JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用

Springboot父子工程搭建到部署相关推荐

  1. maven父子工程搭建

    父子模块搭建 1. 工程模块图 图片来源:https://striveday.blog.csdn.net/article/details/109218784 2.创建项目 (1)New -> P ...

  2. springboot聚合工程讲解与部署

    1.什么是聚合工程 如下图所示,拥有父子包结构的springboot工程叫做聚合工程.其中父包包括了多个子包(多个项目). 2.聚合工程优势 组件化管理通用功能,动态的添加功能. 统一管理jar包的版 ...

  3. 芝法酱躺平攻略(1)——SpringBoot 多模块 maven工程搭建

    SpringBoot maven工程搭建 一.设计目标 项目结构: 1. 根目录 2. common模块 3. web-common模块 3.1 web模块 3.2 mysql模块 3.3 redis ...

  4. 搭建SpringBoot脚手架工程系列(1):Spring Initializr的超能力

    前言 SpringBoot作为Java后端最主流的技术栈,是每个Java程序员必备的技能.在微服务架构流行的时代,一个普通的企业级项目通常会有5-10个微服务,业务复杂的企业级项目甚至会有20个以上的 ...

  5. springboot工程的热部署

    springboot工程的热部署 (1)第一步配置pom.xml (2)第二步更改IDEA设置 什么是热部署配置呢? 我们在开发中反复修改类.页面等资源,每次修改后都是需要重新启动才生效,这样每次启动 ...

  6. DEA中创建父子工程与maven打包Springboot聚合工程报错程序包不存在

    DEA中创建父子工程与maven打包Springboot聚合工程报错程序包不存在 问题描述 springboot 项目打包(package)或安装到仓库(install)的时候报错:程序包com.fu ...

  7. 搭建SpringBoot脚手架工程系列(3): 一键启动服务

    前言 接上篇文章SpringBoot脚手架工程系列(2):代码格式化/质量审核/提交检查,赋予了脚手架工程完善的代码格式化/质量审核/提交检查能力.让我们继续来完善脚手架,提高脚手架的工程本地运行&a ...

  8. SpringBoot技术栈搭建个人博客【项目准备】

    前言:很早之前就想要写一个自己的博客了,趁着现在学校安排的实习有很多的空档,决定把它给做出来,也顺便完成实习的任务(搞一个项目出来...) 需求分析 总体目标:设计一套自适应/简洁/美观/易于文章管理 ...

  9. Idea 创建简单的SpringBoot 父子项目

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

最新文章

  1. 程序在内存中运行的奥秘
  2. 地球是否健康,最新“诊断报告”来了
  3. Node.js学习笔记(一)
  4. 记一次与用户的亲密接触
  5. 移植开源QT软件-SameGame
  6. js将文字填充与canvas画布再转为图片
  7. 搜狗浏览器收藏夹在哪_安卓Edge浏览器最新版42.0.2轻体验,整体优良但无特别惊喜...
  8. WIN7与WIN10 安装
  9. mysql 安装目录配置_linux 下mysql安装,目录配置
  10. 矩池云上CUDA、nvcc、cuDNN相关操作汇总
  11. 纵横安卓刷机界的CM,如今转行做无人车了,还获得了加州路测许可
  12. 排列:计算1!+2*2!+3*3!+...+n*n!
  13. 论文笔记:Few-Shot Segmentation Without Meta-Learning : A Good Transductive Inference Is All You Need
  14. mysql索引数据结构图解_一步一步推导MySQL索引隐秘的底层数据结构
  15. 小学数学四年级上册计算机教案,四年级信息技术人教版上册教案
  16. 阿里资深架构师总结:顶级高手都具备的四种思维模型
  17. win 11 无法打出中文句号问题(中/英文标点切换) 微软五笔输入法
  18. 支持向量机用于多分类
  19. Win10下开机自动启动运行bat脚本并打开cmd运行命令
  20. Android效率组件篇 设置长按响应时间(时长)

热门文章

  1. 2022年湖北省大学生电子设计竞赛A题(单项交流电子负载)赛后总结
  2. 无线路由器使用有线的桥接方法。
  3. linux不识别sda,linux – 无法挂载’/ dev / sda’
  4. 北京大学计算机科学系金鑫,北京大学2019届毕业生校友联系人见面会举行
  5. C#中 OUT 的用法
  6. 游戏系列教程之让手游场景3转2制作技巧解析
  7. 个人空间岁末大回报活动12月26日获奖名单
  8. 我认为接口存在的意义
  9. Linux指令--traceroute,netstat,ss
  10. 太白金星的考验----python while循环的执着