Springboot父子工程搭建到部署
文前知识
- 子项目可以继承父项目的依赖, 前提是需要使用parent标签指定父项目
- 子项目可以单独引入依赖, 依赖只对当前子项目有效
- 子项目中没有页面打包方式可以为jar, 有页面打包使用war
创建父工程
就按正常创建springboot项目就行
把src文件夹删除,以下红框的都可以删除,.gitignore如果用不上git也可以删除
创建子工程
挑一个模块出来详细说,其他模块都是同样道理,就不赘述了。
右键项目新建Module
新建model模块存放各种对象。 注意最后的Package:开始会把sparrow_model也带上,我们把它去掉
创建完成后我们按以下几个步骤来:
- 把启动类删除
- 修改pom文件<parent>标签中内容改为我们自己建的父工程
- 标明打包方式为jar <packaging>jar</packaging>
- 添加这个模块所需要的依赖
接下来,先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文件
- 添加<packaging>pom</packaging>
- 添加子模块信息
- 添加依赖管理,我这里随便加的
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包的区别:
- war是一个web模块,其中需要包括WEB-INF,是可以直接运行的WEB模块;jar一般只是包括一些class文件,在声明了Main_class之后是可以用java命令运行的。
- war包是做好一个web应用后,通常是网站,打成包部署到容器中;jar包通常是开发时要引用通用类,打成包便于存放管理。
- war是Sun提出的一种Web应用程序格式,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织;classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean)可以打包成jar放到WEB-INF下的lib目录下。JAR文件格式以流行的ZIP文件格式为基础。与ZIP文件不同的是,JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用
Springboot父子工程搭建到部署相关推荐
- maven父子工程搭建
父子模块搭建 1. 工程模块图 图片来源:https://striveday.blog.csdn.net/article/details/109218784 2.创建项目 (1)New -> P ...
- springboot聚合工程讲解与部署
1.什么是聚合工程 如下图所示,拥有父子包结构的springboot工程叫做聚合工程.其中父包包括了多个子包(多个项目). 2.聚合工程优势 组件化管理通用功能,动态的添加功能. 统一管理jar包的版 ...
- 芝法酱躺平攻略(1)——SpringBoot 多模块 maven工程搭建
SpringBoot maven工程搭建 一.设计目标 项目结构: 1. 根目录 2. common模块 3. web-common模块 3.1 web模块 3.2 mysql模块 3.3 redis ...
- 搭建SpringBoot脚手架工程系列(1):Spring Initializr的超能力
前言 SpringBoot作为Java后端最主流的技术栈,是每个Java程序员必备的技能.在微服务架构流行的时代,一个普通的企业级项目通常会有5-10个微服务,业务复杂的企业级项目甚至会有20个以上的 ...
- springboot工程的热部署
springboot工程的热部署 (1)第一步配置pom.xml (2)第二步更改IDEA设置 什么是热部署配置呢? 我们在开发中反复修改类.页面等资源,每次修改后都是需要重新启动才生效,这样每次启动 ...
- DEA中创建父子工程与maven打包Springboot聚合工程报错程序包不存在
DEA中创建父子工程与maven打包Springboot聚合工程报错程序包不存在 问题描述 springboot 项目打包(package)或安装到仓库(install)的时候报错:程序包com.fu ...
- 搭建SpringBoot脚手架工程系列(3): 一键启动服务
前言 接上篇文章SpringBoot脚手架工程系列(2):代码格式化/质量审核/提交检查,赋予了脚手架工程完善的代码格式化/质量审核/提交检查能力.让我们继续来完善脚手架,提高脚手架的工程本地运行&a ...
- SpringBoot技术栈搭建个人博客【项目准备】
前言:很早之前就想要写一个自己的博客了,趁着现在学校安排的实习有很多的空档,决定把它给做出来,也顺便完成实习的任务(搞一个项目出来...) 需求分析 总体目标:设计一套自适应/简洁/美观/易于文章管理 ...
- Idea 创建简单的SpringBoot 父子项目
背景 使用Idea 创建一个模块化的SpringBoot项目,但是发现Idea 创建父子项目的方式较Eclipse 较为不同,且Idea 创建的过程较Eclipse创建父子项目的过程复杂. Eclip ...
最新文章
- 程序在内存中运行的奥秘
- 地球是否健康,最新“诊断报告”来了
- Node.js学习笔记(一)
- 记一次与用户的亲密接触
- 移植开源QT软件-SameGame
- js将文字填充与canvas画布再转为图片
- 搜狗浏览器收藏夹在哪_安卓Edge浏览器最新版42.0.2轻体验,整体优良但无特别惊喜...
- WIN7与WIN10 安装
- mysql 安装目录配置_linux 下mysql安装,目录配置
- 矩池云上CUDA、nvcc、cuDNN相关操作汇总
- 纵横安卓刷机界的CM,如今转行做无人车了,还获得了加州路测许可
- 排列:计算1!+2*2!+3*3!+...+n*n!
- 论文笔记:Few-Shot Segmentation Without Meta-Learning : A Good Transductive Inference Is All You Need
- mysql索引数据结构图解_一步一步推导MySQL索引隐秘的底层数据结构
- 小学数学四年级上册计算机教案,四年级信息技术人教版上册教案
- 阿里资深架构师总结:顶级高手都具备的四种思维模型
- win 11 无法打出中文句号问题(中/英文标点切换) 微软五笔输入法
- 支持向量机用于多分类
- Win10下开机自动启动运行bat脚本并打开cmd运行命令
- Android效率组件篇 设置长按响应时间(时长)