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多模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring中的set注入方法

    Spring中的set注入方法

    这篇文章主要介绍了Spring中的set注入方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Java8新特性stream和parallelStream区别

    Java8新特性stream和parallelStream区别

    这篇文章主要介绍了Java8新特性stream和parallelStream区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • java并发编程实例分析

    java并发编程实例分析

    在本文里我们给大家分享了关于java并发编程实例分析以及相关知识点,需要的朋友们学习下。
    2019-03-03
  • spring根据controller中接收请求参数不同走不同service的实现方法

    spring根据controller中接收请求参数不同走不同service的实现方法

    这篇文章主要给大家介绍了关于spring实现根据controller中接收请求参数不同走不同service的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2018-11-11
  • struts2中通过json传值解决乱码问题的实现方法

    struts2中通过json传值解决乱码问题的实现方法

    这篇文章主要介绍了struts2中通过json传值解决乱码问题的实现方法,涉及js编码及java解码的相关操作技巧,需要的朋友可以参考下
    2016-06-06
  • JAVA实现对阿里云DNS的解析管理

    JAVA实现对阿里云DNS的解析管理

    本文主要介绍了JAVA实现对阿里云DNS的解析管理,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • jvm-jstack常用的用法示例

    jvm-jstack常用的用法示例

    jstack 是一个常用的用于分析 Java 进程的工具。它可以显示 Java 进程中所有线程状态和堆栈信息,帮助定位 Java 进程中的问题,这篇文章主要介绍了jvm-jstack常用的用法示例,需要的朋友可以参考下
    2023-06-06
  • Spring中的NamespaceHandler加载过程源码详解

    Spring中的NamespaceHandler加载过程源码详解

    这篇文章主要介绍了Spring中的NamespaceHandler加载过程源码详解,Spring提供的NamespaceHandler的处理机制,简单来说就是命名空间处理器,Spring为了开放性提供了NamespaceHandler机制,这样我们就可以根据需求自己来处理我们设置的标签元素,需要的朋友可以参考下
    2024-02-02
  • SpringBoot中@MessageMapping注解的原理及使用详解

    SpringBoot中@MessageMapping注解的原理及使用详解

    这篇文章主要介绍了SpringBoot中@MessageMapping注解的原理及使用详解,@MessageMapping注解是Spring Boot提供的一个重要的注解之一,它可以帮助我们处理WebSocket消息,需要的朋友可以参考下
    2023-07-07
  • Java的Arrays.sort()方法排序算法实例分析

    Java的Arrays.sort()方法排序算法实例分析

    网上看过很多JDK8中Arrays.sort的底层原理,有些说是插入排序,有些说是归并排序,也有说大于域值用计数排序法,否则就使用插入排序,这种说法到底对吗?下面通过本文给大家分析下Java的Arrays.sort()方法到底用的什么排序算法,感兴趣的朋友一起看看吧
    2022-02-02

最新评论