springboot多模块

这里springboot使用idea中的  Spring Initializr 来快速创建。

一、demo

1、创建父项目

首先使用 Spring Initializr 来快速创建好一个父Maven工程。然后删除无关的文件,只需保留pom.xml 文件。

(1)new Project -> spring initializr快速构建SpringBoot,artifactId为springbootmodules,如我的叫nacos-demo。

(2)因为父模块只是为了组织子模块用,删除src等没用的文件,删除pom.xml中maven依赖等信息。

(3)pom文件修改:

父模块打包类型packaging从jar调整为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.demo.nacos</groupId><artifactId>nacos-test</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><modules><module>nacos-provider</module><module>nacos-consumer</module></modules></project>
2、新建子模块

父工程右键 - New - Module - > new Module - > spring initializr ->输入nacos-provider,同样的方法创建nacos-consumer

3、父子项目pom调整

父pom.xml现在只有管理两个子模块的作用,可以抽取子模块统一的配置信息和依赖版本控制放父模块中管理。

3.1、父pom:

(1)添加springboot依赖以及其他一些(所有子项目都用到的)公共依赖;

(2)为方便维护,统一管理子项目依赖的版本号

<?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><groupId>com.demo.nacos</groupId><artifactId>nacos-demo</artifactId><version>0.0.1-SNAPSHOT</version><name>nacos-demo</name><packaging>pom</packaging><!-- springBoot --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.4.RELEASE</version></parent><!-- 模块说明:这里声明多个子模块 --><modules><module>provider</module><module>consumer</module></modules><!-- 版本说明:这里统一管理依赖的版本号 --><dependencyManagement><dependencies><!-- SpringCloud --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Finchley.RELEASE</version></dependency><!-- SpringCloud Alibaba --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.1.0.RELEASE</version></dependency><!--服务注册--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>0.2.2.RELEASE</version></dependency><!-- nacos 注册中心客户端 --><!--        <dependency>--><!--            <groupId>com.alibaba.cloud</groupId>--><!--            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>--><!--            <version>2.1.0.RELEASE</version>--><!--        </dependency>--><!--集中配置--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>2.1.0.RELEASE</version></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!--nocas必须在web环境下--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
3.2、子pom:

(1)使用<parent>标签将父pom作为父工程;

(2)父pom中dependencies的内容不需要在子pom中重复添加;

(3)父pom中dependencyManagement只作为版本号管理,子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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.demo.nacos</groupId><artifactId>provider</artifactId><version>0.0.1-SNAPSHOT</version><name>provider</name><parent><artifactId>nacos-demo</artifactId><groupId>com.demo.nacos</groupId><version>0.0.1-SNAPSHOT</version></parent><dependencies><!-- SpringCloud --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId></dependency><!-- SpringCloud Alibaba --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId></dependency><!--服务注册--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--集中配置--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/573944.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Frontend - Echarts(柱状条形图)

目录 一、下载并安装 &#xff08;一&#xff09;官网 &#xff08;二&#xff09;下载依赖 1. 官网里选择下载方式 2. 官网github方式下载 &#xff08;三&#xff09;配置依赖 1. 依赖文件放置在 static/js 中 2. 模板中插入依赖文件 二、制作柱状条形图 &#xff…

我与电源 3 - 电源反激战

老同志看到标题就能猜到,我今天要讲什么。 在我的技术栈里面,对于交流电接触的实在不多,因此对于反激电源这个鬼东西,我一开始也是非常模糊的。 2014 年的时候,我来到了一家做平衡车的企业,承担的任务是开发独轮平衡车,彼时公司只有两轮平衡车业务,那时候的两轮平衡车…

网站自动发布系统,本地电脑文章自动发布到网站

在数字化时代&#xff0c;网站的内容更新对于保持网站活跃和吸引用户至关重要。然而&#xff0c;手动发布大量文章往往费时费力&#xff0c;因此&#xff0c;许多站长转向使用网站发布系统&#xff0c;尤其是那些可以在本地电脑上实现文章自动批量发布的系统。本文将探讨网站发…

如何进行 SEO 竞争对手分析

SEO &#xff08;搜索引擎优化&#xff09;的世界是一个庞大、复杂且竞争激烈的地方。如此之多&#xff0c;以至于你可能会觉得自己永远无法超越你的竞争对手。 但不要绝望&#xff1a;对竞争对手的 SEO 策略进行一些监视会大有帮助。 它涉及评估他们的关键字定位、反向链接配…

【python】flask模板渲染引擎Jinja2中的模板继承,简化前端模块化开发

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

安卓Activity上滑关闭效果实现

最近在做一个屏保功能&#xff0c;需要支持如图的上滑关闭功能。 因为屏保是可以左右滑动切换的&#xff0c;内部是一个viewpager 做这个效果的时候&#xff0c;关键就是要注意外层拦截触摸事件时&#xff0c;需要有条件的拦截&#xff0c;不能影响到内部viewpager的滑动处理…

LLLM并发加速部署方案(llama.cpp、vllm、lightLLM、fastLLM)

大模型并发加速部署 解析当前应用较广的几种并发加速部署方案&#xff01; llama.cpp vllm lightLLM fastLLM

docker 的网络管理

docker应用自带了三种类型的网络&#xff0c;然后我们自己也能自定义网络 roottest-virtual-machine:~# docker network ls NETWORK ID NAME DRIVER SCOPE 4c3e28760cff bridge bridge local afd1493dc119 host host local 5f200e2eaf22 n…

【学习】软件测试行业有哪些从业方向

从事任何一个行业&#xff0c;不论想入行的新人还是已经在职的从业人员&#xff0c;一定要系统化的掌握自身的学习路线和发展方向&#xff0c;随时对自身的优劣点掌握清楚。尤其是对于软件测试这个岗位。测试职业所涉及的技能范围比较广&#xff0c;测试流程、测试计划、缺陷管…

C是用什么语言写出来的?

C是用什么语言写出来的? C语言的起源和发展是一个迭代过程&#xff1a; 1. 最初的C语言编译器的开发始于对B语言的改进。B语言是由Ken Thompson设计的&#xff0c;它是基于BCPL语言简化而来的。在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「 C语言的…

jmeter常用的函数

20211025白板 课前内容&#xff1a; 参数&#xff1a; 用户定义变量&#xff1a;它是一个全局变量&#xff0c;在启动运行时&#xff0c;获取一次值&#xff0c;在运行过程中&#xff0c;不会动态获取值。 用户定义变量&#xff0c;在启动时获取一次值&#xff0c;在运行过程中…

课堂练习——4、实验环境练习

任务描述 本关任务&#xff1a;修改 Linux 0.11 内核程序&#xff0c;将系统启动时显示的字符串由原来的Partition table ok.变为Hello, world!。 通过本关任务&#xff0c;可以熟悉 Linux 0.11 内核实验环境&#xff0c;掌握内核程序的编辑、编译和测试方法。 相关知识 为了…