Sprinboot聚合项目归荑

news2024/12/23 9:26:50

1、前言

        在创建springboot项目时,都会有一个Main方法。如果将Springboot项目设计成聚合项目时,我们是不是要把所有的子项目都按照Springboot的方式创建呢?如果是会出现什么问题,以及我们怎么解决呢?

        如果我们使用maven项目+Springboot项目混合使用,会有什么问题呢?

        这些都是今天我们要探讨的问题。

2、纯Springboot搭建聚合项目

        聚合项目的分层可以参照博主的另一篇文章:【微服务项目结构最佳实践】

2.1 创建父级工程

2.1.1 创建moudle或者project

因为Springboot项目的Packaging 没有pom的选项,这里可以直接使用默认的jar,创建完成之后修改成pom即可。

2.1.2 选择Springboot版本

 因为是父级工程,所以只需要选择Springboot版本即可,然后完成创建。

2.1.3 删除多余的包,只留下pom.xml

        a、pom中增加

<packaging>pom</packaging>

        b、根据需要决定是否要删除dependencies,父级pom中的依赖可以被所有子项目共享。

        c、指定Springboot启动运行的Main方法【这里不指定会出现问题,后面会介绍

<build>
    <plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<configuration>
				<mainClass>xxxx.xxxx.xxxx.Test02Application</mainClass>
			</configuration>
		</plugin>
	</plugins>
</build>

        d、根据需要配置是否跳过测试文件

<!--编译跳过测试文件检查的生命周期-->
<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-surefire-plugin</artifactId>
	<configuration>
		<skip>true</skip>
	</configuration>
</plugin>

2.2 创建子工程(被引用的工程)

2.2.1 选择moudle,同2.1.1、2.1.2

2.2.2 修改pom文件的parent标签,指向父级工程

<parent>
    <groupId>com.simonking</groupId>
    <artifactId>simonking-test</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>

2.2.3 增加pom文件中packaging标签为jar

<packaging>jar</packaging>

2.2.4 删除pom中的 spring-boot-maven-plugin,可以直接依赖父级项目中的。

2.2.5 在父级pom中增加moudle

<modules>
    <module>test01</module>
</modules>

2.3 创建子项目(启动的工程)

2.3.1 选择moudle,同2.1.1

2.3.2 选择同父级的springboot版本,然后选择需要依赖。

2.3.3 同2.2.3、2.2.4、2.2.5

2.4 遇到的问题以及解决方案

        a、使用maven编译项目时,会出现“找不到主类”的报错

        答:因为Springboot项目启动默认会加载 public static void main方法,当有多个时会报错。如果删除被引用的子项目的Main方法,又会出现“缺少主类”的错误,被引用的子项目并不需要Main方法。这时候需要我们再编辑时指定Main方法。也就是父级pom中mainClass的配置。这样可以完美的解决这个问题。

        b、当主项目引用其他项目时,明明可以引用到其他包里的方法,编译的时候就会报“找不到类”,直接运行又可以正常运行。编译之后就会报错。

        答:笔者根据网上的教程清除缓存,重启idea,并不能解决此问题。因为运行可以,编译出错猜测可能是maven的问题。这个猜测从stackoverflow上的得到验证:传送门

于是升级maven版本从3.6.1->3.9.1,问题解决。

3、使用maven+Springboot混合搭建

        创建过程和Springboot创建很类似,可以将引用的项目使用maven创建,因为maven项目是可以选择parent的,父级pom中的moudles可以不用维护。

  4、使用Springboot项目导入依赖的插件

        这个插件还比较好玩的就是Springboot项目可以使用插件选择插件导入,就像创建项目选择依赖一样。

4.1 插件

4.2 使用

pom中alt + insert、选择Edit Starters

 4.3 导入

 这里的Springboot版本是指定死的,所以可以放心勾选。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ChatGPT原理详解+实操

言 ChatGPT已近火了快大半年了&#xff0c;从去年刚出来的时候小编就关注了一下&#xff0c;也具体的使用过&#xff0c;然后就惊为天人&#xff0c;再然后就没有然后了&#xff0c;因为小编那段时间沉迷于AIGC了。ChatGPT今年开年后更是火的一塌糊涂&#xff0c;无论是行业内…

chatgpt智能提效职场办公-ppt怎么加音乐背景

作者&#xff1a;虚坏叔叔 博客&#xff1a;https://xuhss.com 早餐店不会开到晚上&#xff0c;想吃的人早就来了&#xff01;&#x1f604; 在 PowerPoint 中&#xff0c;您可以轻松地将音乐作为背景音乐添加到您的演示文稿中。下面是步骤&#xff1a; 打开您的 PowerPoint 演…

【大厂直通车】哔哩哔哩日常实习_测开面经

📑哈喽,大家好,我是小浪;本篇博客更新的是最新B站测开面经,本专栏非常适合目前准备找实习,或者准备冲秋招测试,测开方向的同学阅读订阅,持续更新各大厂真题面经,带你成为offer收割机!! 🧃对于订阅本专栏的同学们,博主在努力更新,只需要一杯奶茶钱,订阅本专栏,…

【命名空间】using namespace std是什么意思?

目录 一、前言二、命名空间2.1命名空间的定义2.2命名空间的成员调用2.2.1加命名空间名称及作用域限定符2.2.2使用using将命名空间中某个成员引入2.2.3使用using namespace 命名空间名称 引入 2.3命名空间的成员的优先级 三、using namespace std 一、前言 我们很多接触过C编程…

考了华为认证,如何找工作?能进哪些公司?有没有前景?

哪些人适合考华为&#xff1f;考了华为认证好不好找工作&#xff1f;这应该是困扰很多网工的问题。 俗话说&#xff0c;男怕入错行&#xff0c;女怕嫁错郎。如何选择一条适合自己的道路&#xff0c;提前做好职业规划&#xff0c;对个人职业发展至关重要。 下面就为大家整理了…

C#基础学习--预处理指令

目录 什么是预处理指令 基本规则 #define 和 #undef 指令 条件编译 条件编译结构 诊断指令 行号指令 ​编辑 区域指令 #pragam warning 指令 什么是预处理指令 源代码指定了程序的定义&#xff0c;预处理指令指示编译器如何处理源代码 基本规则 #define 和 #undef 指令…

基于uniapp+vue微信小程序的在职考研学习辅导系统

1系统具有良好的集成性&#xff0c;提供标准接口&#xff0c;以实现与其他相关系统的功能和数据集成。开放性好&#xff0c;便于系统的升级维护、以及与各种信息系统进行集成。功能定位充分考虑平台服务对象的需求。 一个微信小程序由.js、.json、.wxml、.wxss四种文件构成&…

CSS学习(4) - 链接,列表和表格

文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 文章目录 CSS链接CSS列表CSS表格 CSS链接 链接样式&#xff0c;通过 color font-family background 等来设置&#xff1a; a{color: hotpink;font-size: 30px; }可以指定不同的链接时刻来指定不同的样式&#xff1a; l…

Python中随机梯度下降法

随机梯度下降法 批量梯度下降使用全部的训练样本来计算梯度&#xff0c;并更新模型参数&#xff0c;因此它的每一次迭代计算量较大&#xff0c;但对于凸优化问题&#xff0c;可以保证每次迭代都朝着全局最优解的方向前进&#xff0c;收敛速度较快&#xff0c;最终收敛到的结果…

synchronized原理:

vm中每个对象都会有一个监视器Monitor&#xff0c;监视器和对象一起创建、销毁。监视器相当于一个用来监视这些线程进入的特殊房间&#xff0c;其义务是保证&#xff08;同一时间&#xff09;只有一个线程可以访问被保护的临界区代码块。每一个锁都对应一个monitor对象&#xf…

如何训练自己的大型语言模型

如何使用 Databricks、Hugging Face 和 MosaicML 训练大型语言模型 (LLM) 介绍 大型语言模型&#xff0c;如 OpenAI 的 GPT-4 或谷歌的 PaLM&#xff0c;已经席卷了人工智能世界。然而&#xff0c;大多数公司目前没有能力训练这些模型&#xff0c;并且完全依赖少数大型科技公司…

LaoCat带你认识容器与镜像之Docker网络

近期比较忙&#xff0c;心思也比较乱&#xff0c;难得今天休息&#xff0c;闲来无事&#xff0c;借机更新一下系列 ~ 系列目录 LaoCat带你认识容器与镜像&#xff08;一&#xff09; LaoCat带你认识容器与镜像&#xff08;二【一章】&#xff09; LaoCat带你认识容器与镜像&…

软件安全性与隐私保护的最佳实践

在当今数字化时代&#xff0c;随着软件使用的普及和信息技术的发展&#xff0c;软件安全性和隐私保护越来越成为了IT领域关注的热点问题。在此&#xff0c;本文将探讨软件安全性和隐私保护的最佳实践&#xff0c;以帮助大家更好地保护自己的信息安全。 一、软件安全性最佳实践…

数据结构与算法八 优先队列

一 优先队列 普通的队列是一种先进先出的数据结构&#xff0c;元素在队列尾追加&#xff0c;而从队列头删除。在某些情况下&#xff0c;我们可能需要找出队列中的最大值或者最小值&#xff0c;例如使用一个队列保存计算机的任务&#xff0c;一般情况下计算机的任务都是有优先级…

C语言-malloc、free、memset、realloc、strcpy

malloc()开辟指定内存空间 函数原型 void *malloc(size_t size) C 库函数 void *malloc(size_t size) 分配所需的内存空间&#xff0c;并返回一个指向它的指针。 free 释放内存空间 free C 库函数 void free(void *ptr) 释放之前调用 calloc、malloc 或 realloc 所分配的…

紧跟时代潮流,如用ChatGPT速成自媒体达人

每一个选题是否成为爆款和热门&#xff0c;这个就占了80%&#xff0c;为什么&#xff1f;因为我看到你的标题&#xff0c;我可以点进去啊&#xff0c;不管内容如何&#xff0c;至少让人眼前一亮&#xff0c;有点进去的欲望&#xff0c;至少浏览量会很大&#xff0c;这就成功了一…

【LeetCode: 1043. 分隔数组以得到最大和 | 暴力递归=>记忆化搜索=>动态规划 | 线性dp 区间dp】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

使用ETL工具Sqoop,将MySQL数据库db03中的10张表的表结构和数据导入(同步)到大数据平台的Hive中

在MySQL中&#xff0c;创建一个用户&#xff0c;用户名为sqoop03&#xff0c;密码为&#xff1a;123456 启动MySQL&#xff1a;support-files/mysql.server start 进入MySQL&#xff1a;mysql -u root -p 创建用户sqoop03&#xff1a;grant all on *.* to sqoop03% identifi…

5.5 高斯型求积公式简历

学习目标&#xff1a; 我会按照以下步骤学习高斯求积公式简介&#xff1a; 理解积分的概念&#xff1a;学习什么是积分以及积分的几何和物理意义&#xff0c;如面积、质量、电荷等概念。 掌握基本的积分技巧&#xff1a;掌握基本的积分公式和技巧&#xff0c;如换元法、分部积…

重要通知!报表控件FastReport VCL将停止支持旧的 Delphi 版本

FastReport 是功能齐全的报表控件&#xff0c;可以帮助开发者可以快速并高效地为.NET&#xff0c;VCL&#xff0c;COM&#xff0c;ActiveX应用程序添加报表支持&#xff0c;由于其独特的编程原则&#xff0c;现在已经成为了Delphi平台最优秀的报表控件&#xff0c;支持将编程开…