Idea中SpringBoot多模块项目的建立实现

 更新时间:2020年06月15日 11:52:14   作者:少安  
这篇文章主要介绍了Idea中SpringBoot多模块项目的建立实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

What

内含一个或多个maven模块的SpringBoot项目称为SpringBoot多模块项目

Why

便于维护 将一个大的单体项目分成多个子模块有利于模块间的维护, 删除或移动单个模块时对其他模块的影响也比较小 单个模块还可以复用

共享依赖 只需要在父类中定义公共的依赖项,子类模块都会共享父类的依赖项 在大型项目中会使得代码更容易简洁。

How

1.父模块

创建父项目(SpringBoot)

删除不需要的目录

去除src .mvn mvnw mvnw.cmd 文件

pom

packaging标签 打包方式改为"pom", 表示这个模块是 聚合模块 把子类模块都"聚合"起来 使用maven打包,可以从这个模块开始,会自动计算打包顺序

<packaging>pom</packaging>

dependencies与dependencyManagement标签

1. dependencies将依赖放入标签中 子模块会自动引入父类的的依赖

2. dependencyManagement将依赖放入标签中 子模块 不会 自动引入父类的的依赖 还需要在子类中声明一次依赖 GAV中 不需要 声明version标签,version同父类中的一致

父类pom文件demo

<!--	父类: springboot自带的启动类父类-->
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.2.4.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

<!--	创建时填写的基本信息-->
	<groupId>com.ybj</groupId>
	<artifactId>my-app</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>my-app</name>
	<description>springboot多项目</description>
<!--	父类的packing只能是pom-->
	<packaging>pom</packaging>
<!-- 子类直接继承-->
 <dependencies>
<!-- 子类需要在pom中 手动加入依赖(version不用写)-->
 <dependencyManagement>

modules标签 这个标签管理的是被聚合的模块 当新建子模块时,modules会自动添加单个的module标签

启动类

父模块启动类,是整个模块的启动类 所有的请求都走父模块的端口 为了使子模块的服务也能启动,需要在父模块启动类上加入注解

@ComponentScan(basePackages = {"com.ybj.*",})

2.子模块

1.创建子模块

选择Module

选择maven项目

输入具体信息

2.pom

packaging标签 这里可以选择jar或者war 指定打包方式

parent 子类pom中的parent自动指向了父类的GAV 子类会自动引入父类pom中 dependencies 的中依赖项

<!-- 父类:自动选择了父类-->
 <parent>
  <artifactId>my-app</artifactId>
  <groupId>com.ybj</groupId>
  <version>0.0.1-SNAPSHOT</version>
 </parent>

模块间依赖 需要依赖某个模块,可以在pom中声明 这里的依赖是从本地仓库下载的,不是远程仓库

Maven Helper插件 在idea中安装maven helper插件 点击pom文件,选择 Dependency Analyzer

即可查看并搜索依赖项,这对于解决依赖冲突很有帮助

4.打包

方式1:聚合模块直接打包

在聚合模块打包,会自动计算依赖顺序,依次打包

依次执行 clean 与 install maven会自动计算构建顺序

方式2:使用插件

方式1的问题就是耗费时间长, 因为是全部打包, 所以就需要实现单个模块打包 这里需要借助spring-boot-maven-plugin插件

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<version>2.3.0.RELEASE</version>
			<executions>
				<execution>
					<goals>
						<goal>repackage</goal>
					</goals>
				</execution>
			</executions>
		</plugin>
	</plugins>
</build>

5. 常见问题

依赖冲突

因为子类会继承父类的依赖项,所以可能 导致依赖冲突,从而使项目无法启动。 这里可以使用maven helper插件进行冲突的排查

到此这篇关于Idea中SpringBoot多模块项目的建立实现的文章就介绍到这了,更多相关Idea中SpringBoot多模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MyBatis中if标签的基本使用

    MyBatis中if标签的基本使用

    本文介绍了MyBatis框架中的if标签的使用方法,包括动态生成SQL语句、处理不同类型的参数和if标签进行条件判断,具有一定的参考价值,感兴趣的可以了解一下
    2024-12-12
  • MyBatis核心配置文件深入分析

    MyBatis核心配置文件深入分析

    这篇文章主要介绍了MyBatis核心配置文件,MyBatis的前身就是iBatis,iBatis本是由Clinton Begin开发,后来捐给Apache基金会,成立了iBatis开源项目。2010年5月该项目由Apahce基金会迁移到了Google Code,并且改名为MyBatis
    2022-12-12
  • 解决SpringBoot2多线程无法注入的问题

    解决SpringBoot2多线程无法注入的问题

    这篇文章主要介绍了解决SpringBoot2多线程无法注入的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Java并发之Condition案例详解

    Java并发之Condition案例详解

    这篇文章主要介绍了Java并发之Condition案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • idea maven 经常主目录自动变回默认的解决方法

    idea maven 经常主目录自动变回默认的解决方法

    很多朋友反映idea maven 经常主目录自动变回默认,遇到这样的问题真的很头疼,该如何解决呢?下面小编给大家介绍下idea maven目录变回默认的解决方法,需要的朋友可以参考下
    2022-08-08
  • JVM中对象的创建与OOP-Klass模型

    JVM中对象的创建与OOP-Klass模型

    这篇文章主要介绍了JVM中对象的创建与OOP-Klass模型,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java springboot Mongodb增删改查代码实例

    Java springboot Mongodb增删改查代码实例

    这篇文章主要介绍了Java springboot Mongodb增删改查代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Java多线程之多线程异常捕捉

    Java多线程之多线程异常捕捉

    在java多线程程序中,所有线程都不允许抛出未捕获的checked exception,也就是说各个线程需要自己把自己的checked exception处理掉,通过此篇文章给大家分享Java多线程之多线程异常捕捉,需要的朋友可以参考下
    2015-08-08
  • java生成图片验证码功能

    java生成图片验证码功能

    最近在用ssm框架做一个管理系统,做到登录验证时,需要实现图片验证码功能,今天小编给大家分享基于java制作的图片验证码功能,感兴趣的朋友一起看看吧
    2019-12-12
  • Java调用Oracle存储过程详解

    Java调用Oracle存储过程详解

    这篇文章主要介绍了Java调用Oracle存储过程详解的相关资料,需要的朋友可以参考下
    2017-02-02

最新评论