微服务下 Spring Boot Maven 工程依赖关系管理
单体 Spring Boot Maven 工程
最基本的 pom.xml 包含工程信息、Spring Boot 父工程、属性配置、依赖包、构建插件
<?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"><modelVersion>4.0.0</modelVersion><!-- 工程信息 --><groupId>com.anoyi</groupId><artifactId>demo</artifactId><version>1.0-SNAPSHOT</version><!-- Spring Boot 父工程 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.2.RELEASE</version></parent><properties><!-- 相关属性、第三方依赖版本号 --></properties><dependencies><!-- Spring Boot 依赖、其他依赖 --></dependencies><!-- 构建 --><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
微服务多 Spring Boot 应用依赖关系管理
蓝色:仅 pom.xml 文件,无代码
黄色:包含 pom.xml 文件,一些具有通用性的代码,如工具类等
绿色:Spring Boot 应用工程,含有启动类,与上述单体应用类似
蓝色:自定义 Parent
为避免微服务下包的滥用,应该统一管理第三方依赖的版本,同时为了方便 mvn deploy 操作,可以加上公司内部 Maven 私服的信息。
<?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"><modelVersion>4.0.0</modelVersion><!-- 自定义 Parent --><groupId>com.anoyi</groupId><artifactId>parent</artifactId><version>1.0.0.RELEASE</version><packaging>pom</packaging><!-- 继承 Spring Boot --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.2.RELEASE</version></parent><properties><!-- 第三方依赖版本号 --><common.version>1.0.0.RELEASE</commont.version></properties><dependencyManagement><dependencies><!-- 第三方依赖 --><dependency><groupId>com.anoyi</groupId><artifactId>common</artifactId><version>${common.version}</version></dependency></dependencies></dependencyManagement><!-- 公司内部私有 Maven 仓库 --><distributionManagement><repository><id>central</id><name>*****</name><url>*****</url></repository></distributionManagement></project>
常用操作
# 安装到本地、推送到 Maven 私服mvn clean install deploy
黄色:自定义依赖
比如一些通用的工具类包,为了避免代码在不用项目的复制,可以制作成一个 Maven 模块打包,用于其他项目引用。如果这个工具包还依赖了一些其他包,可以在上述 Parent 中统一管理这些包的版本。
<?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"><modelVersion>4.0.0</modelVersion><groupId>com.anoyi</groupId><artifactId>common</artifactId><version>1.0.0.RELEASE</version><packaging>jar</packaging><parent><groupId>com.anoyi</groupId><artifactId>parent</artifactId><version>1.0.0.RELEASE</version></parent><!-- 其他属性配置 --><properties><!-- 可选填 --></properties><!-- 公共依赖 --><dependencies><!-- 框架 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 工具类 --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId></dependency><!-- 其他依赖 --></dependencies></project>
常用操作
# 安装到本地、推送到 Maven 私服mvn clean install deploy
构建出来的 jar 包中仅包含编译后的 class 文件及依赖关系,非常轻量!
绿色:Spring Boot Application
最终的目标是构建出可运行的 jar 包,就需要打包所有依赖的代码文件到一起,使用 Spring Boot Maven 插件就能轻易完成。
<?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"><modelVersion>4.0.0</modelVersion><groupId>com.anoyi</groupId><artifactId>server-general</artifactId><version>1.0-SNAPSHOT</version><!-- 自定义 Parent 工程 --><parent><groupId>com.anoyi</groupId><artifactId>parent</artifactId><version>1.0.0.RELEASE</version></parent><dependencies><!-- Spring Boot 依赖、自定义依赖 或 其他依赖 --><dependency><groupId>com.anoyi</groupId><artifactId>common</artifactId></dependency></dependencies><!-- 构建可执行的 jar 包 --><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
常用操作
# 构建可执行 jar 包到 target 目录mvn clean package
业务代码复用
解耦业务,合理拆分微服务模块,使用 RPC 框架,能有效的复用代码。
轻量级微服务架构,容器化环境,PRC 框架可以使用 spring-boot-starter-grpc
微服务下 Spring Boot Maven 工程依赖关系管理的更多相关文章
- Spring boot学习1 构建微服务:Spring boot 入门篇
Spring boot学习1 构建微服务:Spring boot 入门篇 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...
- 构建微服务:Spring boot
构建微服务:Spring boot 在上篇文章构建微服务:Spring boot 提高篇中简单介绍了一下spring data jpa的基础性使用,这篇文章将更加全面的介绍spring data jp ...
- SpringCloud(8)微服务监控Spring Boot Admin
1.简介 Spring Boot Admin 是一个管理和监控Spring Boot 应用程序的开源软件.Spring Boot Admin 分为 Server 端和 Client 端,Spring ...
- spring boot 2.0.3+spring cloud (Finchley)8、微服务监控Spring Boot Admin
参考:Spring Boot Admin 2.0 上手 Spring Boot Admin 用于管理和监控一个或多个Spring Boot程序,在 Spring Boot Actuator 的基础上提 ...
- 小马哥-Java 微服务实践 - Spring Boot 系列-01Java 微服务实践 - Spring Boot 系列(一)初体验
课程github地址 https://github.com/mercyblitz/segmentfault-lessons 传统的web应用架构.微服务是一种架构.不限定什么语言 单体应用和微服务的对 ...
- Java微服务之Spring Boot on Docker
本文学习前提:Java, Spring Boot, Docker, Spring Cloud 一.准备工作 1.1 安装Docker环境 这一部分请参考我的另一篇文章<ASP.NET Core ...
- 构建微服务:Spring boot 入门篇
什么是Spring Boot Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而 ...
- HTTP RESTful服务开发 spring boot+Maven +Swagger
这周配合第三方平台整合系统,需要提供HTTP REST服务和使用ActiveMQ推送消息,研究了下,做个笔记. 1.使用eclipse创建Spring Boot项目 创建Spring Boot项目( ...
- Java 微服务实践 - Spring Boot 系列
https://segmentfault.com/l/1500000009515571
随机推荐
- [转帖]一个ip对应多个域名多个ssl证书配置-Nginx实现多域名证书HTTPS
一个ip对应多个域名多个ssl证书配置-Nginx实现多域名证书HTTPS https://home.cnblogs.com/u/beyang/ 一台服务器,两个域名 首先购买https,获取到CA证 ...
- [转帖]SSH 的 三种代理功能.
https://www.zhihu.com/people/skywind3000/activities 之前用过frp 知道 ssh 有一 反向代理的功能 没想到 还有这么多高级功能 收藏一下. ss ...
- Flutter 常用工具类库common_utils
地址:https://pub.flutter-io.cn/packages/common_utils#-readme-tab- Dart常用工具类库 common_utils 1.TimelineUt ...
- kibana——es的批量操作
一·_mget: 1.创建的索引如下: 2.批量查询: #查询两个 GET _mget { "docs":[ { "_index":"testdb&q ...
- PHP的特质Trait使用
参考: Trait的使用,网站地址https://www.jianshu.com/p/fc053b2d7fd1
- Ajax的post表单,不在url后接一大串参数键值对的方法
$('#loginForm').on('submit',function (ev) { //阻止表单参数附在url后面 ev.stopPropagation(); ev.preventDefault( ...
- IBM rational rose画时序图软件破解安装
上边这个链接是开头的安装步骤,照着链接中的步骤安装完之后,接下来看下边. 1.然后安装完成打开软件“IBM Rational License Keyadministrator”.出现下图:选中第二项“ ...
- query中对应的OnSetText和onGetText事件
今天在看代码的时候遇到一个问题,query中的某个字段和在表中显示的不是一个值,我觉得很奇怪,于是找了很久,才知道为什么,原来是query中的OnSetText和onGetText事件在作怪,经过一番 ...
- python之if使用方法举例
if使用方法举例: import random #随机生成1-100的整数 n = random.randint(1, 100) if n > 50: print(n, "> 5 ...
- 洛谷 P1032 子串变换
题目链接 https://www.luogu.org/problemnew/show/P1032 本题是一道bfs问题,从a串开始,每一步完成替换一对字符串(但是一个一步替换可以将这对字符串替换好几次 ...