使用Maven搭建Javaweb模块化项目
0 模板简介
本文记录了我在最近进行的今日指数项目中,如何从零开始搭建一个Java Web多模块项目,并集成MyBatis和Swagger。同时,还实现了一个根据用户名查询用户信息的简单功能。主要目的是通过规范项目目录结构,达到举一反三的效果。
1 创建父工程
模板由父子模块组成,parent模块负责管理版本,demo_common通用模块,demo_backend业务模块。
1.1 创建空的父工程
在Advanced Settings中填写项目信息。
GroupId:组织的唯一标识符,域名.公司名.项目名,org.apache.tomcat
ArtifactID: 项目的唯一的标识符, 项目名-xxx
在maven中通过GroupId和ArtifactID唯一确定一个jar包。
1.2 修改项目的maven地址
新建一个项目默认选择的是idea中自带的maven,我们修改为本地maven。
1.3 修改文件编码
1.4修改父工程的pom文件
1.4.1修改打包方式为pom
父工程不需要部署,只定义项目的依赖及版本。将项目打包方式修改为pom
<packaging>pom</packaging>
1.4.2.properties+dependencyManagement管理子工程的依赖版本
在properties中定义版本号(相当于全局变量),dependencyManagement中使用${},引入参数即可
dependencyManagement只做依赖的版本定义,并不直接导入依赖。
dependencyManagement中爆红解决方案
以下是模板使用的全局依赖定义,个人开发时根据实际情况删减。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<maven.surefire.version>2.12.4</maven.surefire.version>
<mybatis-spring-boot-starter.version>2.1.4</mybatis-spring-boot-starter.version>
<pagehelper-spring-boot-starter.version>1.2.12</pagehelper-spring-boot-starter.version>
<mysql-driver.version>5.1.49</mysql-driver.version>
<fastjson.version>1.2.71</fastjson.version>
<springfox-swagger2.version>2.9.2</springfox-swagger2.version>
<druid-spring-boot-starter.version>1.1.22</druid-spring-boot-starter.version>
<druid-core-version>1.2.8</druid-core-version>
<sharding-jdbc.version>4.0.0-RC1</sharding-jdbc.version>
<jjwt.version>0.9.1</jjwt.version>
<easyExcel.version>3.0.4</easyExcel.version>
<xxl-job-core.version>2.3.0</xxl-job-core.version>
<spring-boot.version>2.5.3</spring-boot.version>
<joda-time.version>2.10.5</joda-time.version>
<google.guava.version>30.0-jre</google.guava.version>
<knif4j.version>2.0.2</knif4j.version>
<hutool.version>5.7.21</hutool.version>
<swagger.version>2.6.1</swagger.version>
<junit.version>3.8.1</junit.version>
</properties>
<!--定义依赖的版本,不负责依赖的引入,只负责版本的约定-->
<dependencyManagement>
<!--!!!易错点-->
<!--因为dependencyManagement标签只负责定义版本,不负责导入,如果maven仓库中没有指定的依赖,则报红色警告
解决方式:先通过dependencies标签下载资源,然后删除
-->
<dependencies>
<!--引入junit依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
<!--引入springboot依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--引入mybatis场景依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis-spring-boot-starter.version}</version>
</dependency>
<!--pageHelper场景依赖-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>${pagehelper-spring-boot-starter.version}</version>
</dependency>
<!--mysql驱动包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-driver.version}</version>
</dependency>
<!--shardingjdbc分库分表-->
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>${sharding-jdbc.version}</version>
</dependency>
<!--json工具包-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<!--druid-boot依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid-spring-boot-starter.version}</version>
</dependency>
<!--druid core-->
<dependency>
<groupId>com.alibaba</