Maven聚合工程
maven是我们一款常用的工具,可以使用maven去maven的中央仓库下载我们需要的依赖,摒弃传统以jar包导入外部代码的方式。
其实,maven除了可以通过pom坐标的方式去引入依赖,我们还可以通过maven聚合工程的方式去实现模块的复用。
一、单体项目
我们传统的项目,一般后端采样MVC的架构,会分层,分为dao层,service成,controller层,文件的目录如下,我们把各个模块分类放在不同的包中。
在一般的单体项目中,这种分类的方式还是很好用的,但是这种方法有一个缺点,在一些微服务项目中,比如电商系统,系统可能有一个前台商城页面,还有一个后台的商家管理系统,这两个系统都涉及对Goods商品类的依赖。你想想,商品前台模块和后台模块是两个系统,但是他们都涉及对商品的操作,于是他们必须在两个系统中同时创建一个Goods商品类和商品类的dao,一旦商品类要发生修改,所有带有商品类的工程也要修改。
二、maven聚合工程是什么
maven为了解决这个问题,使用聚合工程这个概念,就是把多个系统需要依赖的类,不再是把它放在一个包里边,而是将它放在一个maven工程里,maven再把这个模块,部署到maven仓库,之后如果其他模块需要这个类,就只需要导入maven坐标,而不用再新建类了,如果类要发生改变,也只需要改动一次后,重新部署到maven仓库了。
maven聚合项目结构一般如下图所示,每个模块不再是一个包,而是一个个maven工程。
三、maven工程的搭建
1、创建父级工程
maven聚合工程中,每个模块都是一个个的maven工程,他们每个子maven工程,依赖在一个父工程下,所以先创建一个父工程。
项目创建好后,设置打包方式为pom
2、创建子工程common
跟父级工程一样不选择模板,创建mall-common,
创建子模块后,默认的打开方式为jar包,无需显示指定
创建好工程后,查看父级工程pom中是否存在子模块的配置项
3、安装创建common的方法,创建web,mapper,service
4、设置模块之间的相互依赖
现在虽然dao,service,web模块都有了,但是他们并不是在一个工程里边,他们属于不同的maven工程,类和类之间是无法直接相互调用的,我们需要配置模块之间的相互依赖
在mapper中的pom配置加上:
<dependencies>
<dependency>
<groupId>com.mall</groupId>
<artifactId>mall-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
在service的pom加上:
<dependencies>
<dependency>
<groupId>com.mall</groupId>
<artifactId>mall-mapper</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
在web层的pom加上:
<dependencies>
<dependency>
<groupId>com.mall</groupId>
<artifactId>mall-service</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
他们的依赖关系链是
这样配置后,父级模块就能调用子级模块和子级的子级中定义的类了。
5springboot的基本配置
项目最终想要启动起来,还是需要配置springboot
【1】在父级pom中添加依赖
<!--配置springboot
引入依赖parent,完成之后就是springboot工程了
作用:加载了很多的依赖
-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.5.RELEASE</version>
<relativePath/>
</parent>
<!--设置资源属性-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<!--引入核心依赖-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<!--排除springboot默认的日志依赖-->
<exclusions>
<exclusion>
<groupId>org.springframeork.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
<!--排除logback日志-->
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--配置spring自带的web板块-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--配置解析xml-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
【2】application.properties
在web的resources下创建
在application.properties中添加配置端口:
#配置端口号
#配置服务器端口
server.port=8088
server.tomcat.uri-encoding=utf-8
server.max-http-header-size=80KB
server.servlet.context-path=/
【3】创建启动项application.java
【4】在web下创建controller测试类
访问接口
四、maven的模块复用
看的这里,maven工程已经搭建完毕了,但现在,对于这个工程而言,模块复用并没有体现出,但如果我们再建一个工程,这个工程和当前工程共用common模块的Goods类,来看看如何复用。
1、先创建Goods类
2、使用install把项目安装到本地仓库
3、在其他maven项目假如common坐标
4、使用Goods
- 点赞
- 收藏
- 关注作者
评论(0)