Sprinboot聚合项目归夷

news2025/1/16 20:02:36

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/435435.html

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

相关文章

在线画图网站Graph Editor的使用

网站链接 链接 网站介绍 CS Academy是一个在线的算法学习和竞赛的网站&#xff0c;打开网站左侧导航栏中的App目录下有一个可以在线画图的应用Graph Editor&#xff0c;用来画图&#xff08;有向、无向&#xff09;非常好用。 网站使用 网站的界面如下&#xff1a; 左侧为…

Golang每日一练(leetDay0037) 二叉树专题(6)

目录 109. 有序链表转换二叉搜索树 Convert-sorted-list-to-binary-search-tree &#x1f31f;&#x1f31f; 110. 平衡二叉树 Balanced Binary Tree &#x1f31f; 111. 二叉树的最小深度 Minimum Depth of Binary Tree &#x1f31f; &#x1f31f; 每日一练刷题专栏 …

代码随想录算法训练营第五十七天 | 647. 回文子串、516.最长回文子序列

打卡第57天。 今日任务 ● 647. 回文子串 ● 516.最长回文子序列 647. 回文子串 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开…

【云原生进阶之容器】第六章容器网络6.6.1--Cilium网络方案概述

《云原生进阶之容器》专题索引: 第一章Docker核心技术1.1节——Docker综述第一章Docker核心技术1.2节——Linux容器LXC第一章Docker核心技术1.3节——命名空间Namespace第一章Docker核心技术1.4节——chroot技术第一章Docker核心技术1.5.1节——cgroup综述

从入门到精通:带你掌握Python Requests库的全部技能

目录 引言 安装 启动用户管理项目 requests响应 Session请求 为什么Session类可以保持会话 封装requests 引言 Python Requests库是Python语言中最为流行的HTTP客户端库之一。它提供了简单易用的API&#xff0c;让发送HTTP/1.1请求变得异常容易&#xff0c;支持常见的H…

TiDB实战篇-数据导出工具Dumpling

简介 简要使用数据导出工具。 介绍 特点 适用场景 部署 下载 TiDB 社区版 | PingCAP 安装 #解压下载好的安装包 tar -zxvf tidb-community-toolkit-v6.5.0-linux-amd64.tar.gz #进入到文件夹以后解压出dumpling cd tidb-community-toolkit-v6.5.0-linux-amd64 tar -zxvf d…

MySQL中的索引index(超详细)

概念&#xff1a; 在MySQL中&#xff0c;索引&#xff08;index&#xff09;是一种特殊的数据结构&#xff0c;它能够加快数据库中数据的检索速度。索引可以看做是一本书的目录&#xff0c;它提供了一种快速查找数据的方式。 MySQL中的索引是建立在一张表的一列或多列上的&…

开发者社区项目开发流程

项目流程&#xff1a; 项目创建 首先创建一个文件夹&#xff0c;然后找到要创建项目的文件夹 输入CMD 进入小黑窗 输入“vue create 项目名” 创建我们这个项目(其中细节Ctrl左键点击链接见个人博客(99条消息) 创建Vue项目流程_啊唯11的博客-CSDN博客) 2.删除项认文件&#x…

C++命名空间域namespace与域作用限制符: :,cin,cout输入输出简单介绍

TIPS C是在C的基础之上&#xff0c;容纳进去了面向对象编程思想&#xff0c;并增加了许多有用的库&#xff0c;以及编程范式等C总计63个关键字&#xff0c;C语言32个关键字&#xff0c;具体没有必要先不去管它 域&#xff0c;命名空间域与namespace关键字 cpp需要解决的第一…

Java后端面试题 重难点和被问到没答上来的点(包括java基础、关系型数据库、Redis、计算机网络、Spring、Java多线程、vue等)

以下是我记录的一些重点问题和面试中被问到没答上来的问题&#xff0c;包括java基础、关系型数据库、Redis、计算机网络、Spring、Java多线程、vue 问题目录 1.fail-safe和fail-fast2.四引用3.explain字段重要内容4.maven三大生命周期5.MYSQL 创建修改表6.数据库三范式7.Strin…

华科超算用户手册的学习笔记

1. 资源计费 1.1 费用记账 日期费用&#xff08;上限3000元&#xff09;2023.04.171002023.04.18200总计300 1.2 创建实例时显示项目的余额不足 这是因为项目账户之中目前还没有足够的卡时&#xff1b; Note 这里是因为上次充值的卡时还在田老师的个人账户中&#xff0c;还需…

vue el-table 单机行选中高亮并获取行数据,再次单击取消行选中

1. 效果展示 当没有行被选中时&#xff0c;按钮是不可用的 当有行被选中时&#xff0c;该行高亮&#xff0c;同时按钮可用 再次点击该行&#xff0c;取消高亮&#xff0c;按钮不可用 2. 代码 2.1 组件代码 table设置了highlight-current-row&#xff0c;可以在选中某个数据行…

List集合和Set集合的区别

Collection集合总结 在进行Java开发的时候经常会用到集合&#xff0c;而集合又主要分为两种&#xff1a;Collection单列集合和Map集合。这里主要介绍一下Collection的一些常用子接口的区别。 Collection集合&#x1f62e; 指单列集合&#xff0c;存储的一组对象。 List&#x…

4大方法,教你如何做好项目管理

作为一个项目经理&#xff0c;项目管理是我们日常工作最核心的一项职能。无论是公司的业务开发还是重大项目的推进&#xff0c;都离不开项目管理。然而对于很多初入职场的人来说&#xff0c;项目管理还是一个相当新颖、陌生的领域&#xff0c;因此我今天就来分享一些我在项目管…

【安全与风险】密码安全和用户认证

密码安全和用户认证 基本问题证明你是谁为什么要验证还需要什么基于口令的身份认证常用使用模式常用使用模式可惜的是社会工程悉尼大学 (绿化96)尴尬和记忆关于密码使用的3个主要问题UNIX形式的密码密码散列字典式攻击影子密码其他密码问题生物计量学多模式生物识别系统定义为什…

数字化体验时代,企业如何做好内部知识数字化管理

随着数字化时代的到来&#xff0c;企业内部的知识管理也面临着新的挑战和机遇。数字化技术的应用&#xff0c;可以极大地提高企业内部知识的数字化管理效率和质量&#xff0c;从而提升企业内部的工作效率、员工满意度和企业竞争力。本文将从数字化时代的背景出发&#xff0c;探…

NVM安装nodejs的方法

前提&#xff1a; 为解决nodejs升级后出现的各种问题&#xff0c;使用NVM在一台电脑上安装多个版本的nodejs&#xff0c;以便项目可以根据自身使用的node版本来开发。 nodejs版本的查询地址&#xff1a; https://nodejs.org/zh-cn/download/releases/ nodejs下载官网地址&…

17.样式冲突

写在 .vue 组件中的样式会全局生效&#xff0c;比如我现在有一个LEFT组件 有一个RIGHT组件 将LEFT组件与RIGHT组件放在App组件中 发现我只给LEFT样式&#xff0c;但是在RIGHT中也生效了 为了避免这种情况&#xff0c;我们有下面几种解决方式 目录 1 具体到指定的标签 2 sc…

【微信小程序-原生开发】实用教程22 - 绘制图表(引入 echarts,含图表的懒加载-获取到数据后再渲染图表,多图表加载等技巧)

最终效果预览 实现流程 微信小程序中使用 echarts 需使用官方提供的 ec-canvas 组件 1. 下载 ec-canvas 组件 点击下方链接&#xff0c;下载 ec-canvas 组件 https://gitcode.net/mirrors/ecomfe/echarts-for-weixin/-/tree/master 将其中的 ec-canvas 文件夹拷贝到微信小程序…

数据结构考研版——用栈实现后缀表达式前缀表达式求值

用栈实现后缀表达式求值 int calsub(float opand1,char op,float opand2,float &result) {if(op){resultopand1opand2;}if(op-){resultopand1-opand2;}if(op*){resultopand1*opand2;}if(op/){//判断是否为0一般把它与我们宏定义的极小值值进行比较&#xff0c;接近于0则视…