【Random】二、创建多模块SpringBoot项目


​ 准备创建四个子模块的maven项目,四个子模块依次为random-common、random-mbg、random-admin、random-wx。先放个已完成的结构图:
在这里插入图片描述

  • random父模块只管理依赖版本;
  • random-common子模块中主要放一些不涉及业务的工具类,比如时间工具类、分页工具类、POI工具类等等;
  • random-mbg子模块中主要是mybatis相关的东西,包括pojo、mapper以及generator等;
  • random-admin子模块主要是后台管理系统相关的东西,该模块我们准备不采用前后端分离的方式,而是用Thymeleaf开发页面;
  • random-wx子模块主要用于对外接口,暂时确定为微信小程序的接口,如有变动再进行修改。
1、创建Parent模块

​ 上一篇我们已经创建好一个SpringBoot项目,不知道怎么创建的朋友们可以看下上一篇内容,这里就不再赘述。我们直接将已创建好的Springboot项目改为多模块项目的parent部分,上一篇我们创建好的项目结构如图所示,
在这里插入图片描述

​ 将图中标注的都删掉,只保留.idea、.gitignore、pom.xml和random.iml,删除后的项目结构如下:
在这里插入图片描述

2、创建子模块

​ 创建random-common子模块,右键项目名,选择New->Module

在这里插入图片描述

​ 在弹出页面中选择Spring Initializr,其它默认,点击Next。
在这里插入图片描述

​ 将Group改为和parent父模块一致,我这是top.plgxs,Artifact改为random-common,Packaging选择jar,Java Version选择8,Name、Description和Package会自动生成,但自动生成的Package是top.plgxs.randomcommon,我们将random去掉改为top.plgxs.common,改完点击Next。

在这里插入图片描述
​ Dependencies中我们什么都不用选,直接点击Next。

在这里插入图片描述

​ Module name、Content root和Module file location会自动生成,按默认的来就可以,直接点击Finish。

在这里插入图片描述

​ 创建好的项目结构如下图,将.mvn、HELP.md、mvnw、mvnw.cmd删除。ps:pom.xml报错先不用管,最后还要修改。

在这里插入图片描述

​ 至此random-commont子模块已创建完成,其它子模块也按上述步骤进行创建。我们共创建random-common、random-mbg、random-admin和random-wx四个子模块。 总体项目结构图如下:
在这里插入图片描述

3、配置pom.xml

​ random-wx子模块的pom.xml文件,暂时先不做配置,等用到的时候再配置。改完pom.xml后先别点击Import Changes,等全部修改后再一起引入。

3.1、random父模块的pom.xml文件
<?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>top.plgxs</groupId>
	<artifactId>random</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>random</name>
	<packaging>pom</packaging>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.4.0</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<modules>
		<module>random-admin</module>
		<module>random-common</module>
		<module>random-mbg</module>
		<module>random-wx</module>        
	</modules>

	<properties>
		<java.version>1.8</java.version>
		<pagehelper-starter.version>1.3.0</pagehelper-starter.version>
		<pagehelper.version>5.2.0</pagehelper.version>
		<mybatis-generator.version>1.4.0</mybatis-generator.version>
		<mybatis.version>3.5.5</mybatis.version>
		<mybatis-springboot-starter.version>2.1.4</mybatis-springboot-starter.version>		
		<mysql-connector.version>8.0.22</mysql-connector.version>
		<druid.version>1.1.23</druid.version>
		<hutool.version>5.4.0</hutool.version>
		<swagger2.version>2.9.2</swagger2.version>
		<swagger-models.version>1.6.0</swagger-models.version>
		<swagger-annotations.version>1.6.0</swagger-annotations.version>
		<logstash-logback.version>5.3</logstash-logback.version>
		<jackon-databind.version>2.11.0</jackon-databind.version>
		<fastjson.version>1.2.73</fastjson.version>
		<spring-data-commons.version>2.3.0.RELEASE</spring-data-commons.version>
		<jjwt.version>0.9.0</jjwt.version>
		<aliyun-oss.version>2.5.0</aliyun-oss.version>
		<junit.version>5.7.0</junit.version>
	</properties>

<dependencyManagement>
	<dependencies>
		<!-- pagehelper-springboot -->
		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper-spring-boot-starter</artifactId>
			<version>${pagehelper-starter.version}</version>
		</dependency>
		<!-- pagehelper -->
		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper</artifactId>
			<version>${pagehelper.version}</version>
		</dependency>
		<!-- MyBatis 生成器 -->
		<dependency>
			<groupId>org.mybatis.generator</groupId>
			<artifactId>mybatis-generator-core</artifactId>
			<version>${mybatis-generator.version}</version>
		</dependency>
		<!-- MyBatis-->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>${mybatis.version}</version>
		</dependency>
		<!-- MyBatis-springboot -->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>${mybatis-springboot-starter.version}</version>
		</dependency>
		<!-- tk.mybatis -->
		<dependency>
			<groupId>tk.mybatis</groupId>
			<artifactId>mapper-spring-boot-starter</artifactId>
			<version>${tkmybatis-springboot.version}</version>
		</dependency>
		<!--Mysql数据库驱动-->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>${mysql-connector.version}</version>
		</dependency>
		<!--集成druid连接池-->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid-spring-boot-starter</artifactId>
			<version>${druid.version}</version>
		</dependency>
		<!--Hutool Java工具包-->
		<dependency>
			<groupId>cn.hutool</groupId>
			<artifactId>hutool-all</artifactId>
			<version>${hutool.version}</version>
		</dependency>
		<!--Swagger-UI API文档生产工具-->
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger2</artifactId>
			<version>${swagger2.version}</version>
		</dependency>
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger-ui</artifactId>
			<version>${swagger2.version}</version>
		</dependency>
		<!--解决Swagger 2.9.2版本NumberFormatException-->
		<dependency>
			<groupId>io.swagger</groupId>
			<artifactId>swagger-models</artifactId>
			<version>${swagger-models.version}</version>
		</dependency>
		<dependency>
			<groupId>io.swagger</groupId>
			<artifactId>swagger-annotations</artifactId>
			<version>${swagger-annotations.version}</version>
		</dependency>
		<!--集成logstash-->
		<dependency>
			<groupId>net.logstash.logback</groupId>
			<artifactId>logstash-logback-encoder</artifactId>
			<version>${logstash-logback.version}</version>
		</dependency>
		<!-- jackson -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>${jackon-databind.version}</version>
		</dependency>
		<!-- fastjson -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>${fastjson.version}</version>
		</dependency>
		<!--SpringData工具包-->
		<dependency>
			<groupId>org.springframework.data</groupId>
			<artifactId>spring-data-commons</artifactId>
			<version>${spring-data-commons.version}</version>
		</dependency>
		<!--JWT(Json Web Token)登录支持-->
		<dependency>
			<groupId>io.jsonwebtoken</groupId>
			<artifactId>jjwt</artifactId>
			<version>${jjwt.version}</version>
		</dependency>
		<!-- 阿里云OSS -->
		<dependency>
			<groupId>com.aliyun.oss</groupId>
			<artifactId>aliyun-sdk-oss</artifactId>
			<version>${aliyun-oss.version}</version>
		</dependency>
		<dependency>
			<groupId>org.junit.jupiter</groupId>
			<artifactId>junit-jupiter-api</artifactId>
			<version>${junit.version}</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

</project>

3.2、random-common的pom.xml文件
<?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">
    <parent>
        <artifactId>random</artifactId>
        <groupId>top.plgxs</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>random-common</artifactId>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-commons</artifactId>
        </dependency>
        <dependency>
            <groupId>net.logstash.logback</groupId>
            <artifactId>logstash-logback-encoder</artifactId>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
        </dependency>
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
        </dependency>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
        </dependency>
    </dependencies>
</project>
3.3、random-mbg的pom.xml文件
<?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">
    <parent>
        <artifactId>random</artifactId>
        <groupId>top.plgxs</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>random-mbg</artifactId>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>top.plgxs</groupId>
            <artifactId>random-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
        </dependency>
    </dependencies>
</project>
3.4、random-admin的pom.xml文件
<?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">
	<parent>
		<artifactId>random</artifactId>
		<groupId>top.plgxs</groupId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>

	<modelVersion>4.0.0</modelVersion>
	<artifactId>random-admin</artifactId>
	<packaging>jar</packaging>

	<name>random-admin</name>

	<dependencies>
		<dependency>
			<groupId>top.plgxs</groupId>
			<artifactId>random-mbg</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<dependency>
			<groupId>org.junit.jupiter</groupId>
			<artifactId>junit-jupiter-api</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

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

</project>

​ 至此,pom文件都已修改完成,点击Import Changes引入依赖,PS:先确认下maven仓库是否是自己已配置好的。

4、配置application.yml

​ 在random-admin的resources下面将自动生成的application.properties删除,右键New->File,输入application.yml。打开application.yml,将以下内容放入:

server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/random?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
    username: random
    password: random
    druid:
      initial-size: 5 #连接池初始化大小
      min-idle: 10 #最小空闲连接数
      max-active: 20 #最大连接数
      web-stat-filter:
        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*" #不统计这些请求数据
      stat-view-servlet: #访问监控网页的登录用户名和密码
        login-username: druid
        login-password: druid

5、解决依赖报红问题

​ 点击Import Changes引入依赖后,点击IDEA页面右侧的maven查看是否有报红的,若有解决方法如下:

(1)清除缓存然后重启IDEA。File->invalidate caches/restart,选择Invalidate and Restart,此时IDEA会重新启动,若还是报红转下一步。

(2)屏幕右侧找到maven,在lifecycle中选择clean,然后install。

在这里插入图片描述

(3)若install时出现Cannot resolve xxxxxx的情况,则先reimport一下,可以选择报红的模块右键选择maven->reimport,也可以点击下图的位置。
在这里插入图片描述

(4)reimport后如果还是报红,重复步骤一,重启后点击屏幕右侧Maven projects,找到报红的依赖,以下图org.mybatis:mybatis-spring-1.3.2为例,如果该依赖报红,则找到本地仓库的该jar包的位置,将1.3.2文件夹删除。(也可以将1.3.2文件夹内的以.lastUpdated结尾的文件删除,但有时只删除.lastUpdated文件重新download时还会出现.lastUpdated文件,这个看个人情况了)
在这里插入图片描述

​ 回到IDEA,右键该依赖,选择Download Sources and Documentation,全部重新Download后,清除缓存重启IDEA,至此报红问题全部解决。
在这里插入图片描述

​ 最后,如果有出现Could not transfer artifact xxx from/to xxx的问题,也可以通过删除本地jar包再重新下载进行解决。

6、其它问题

(1)maven install时出现Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.

​ 在random-admin的pom文件中,修改<build><plugins>,内容如下:

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

	</build>

项目地址 https://gitee.com/lp1791803611/random

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Stranger。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值