微服务下 Spring Boot Maven 工程依赖关系管理

单体 Spring Boot Maven 工程

最基本的 pom.xml 包含工程信息、Spring Boot 父工程、属性配置、依赖包、构建插件

  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <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">

  3.    <modelVersion>4.0.0</modelVersion>

  4.  

  5.    <!-- 工程信息 -->

  6.    <groupId>com.anoyi</groupId>

  7.    <artifactId>demo</artifactId>

  8.    <version>1.0-SNAPSHOT</version>

  9.  

  10.     <!-- Spring Boot 父工程 -->

  11.    <parent>

  12.        <groupId>org.springframework.boot</groupId>

  13.        <artifactId>spring-boot-starter-parent</artifactId>

  14.        <version>2.0.2.RELEASE</version>

  15.    </parent>

  16.  

  17.    <properties>

  18.        <!-- 相关属性、第三方依赖版本号 -->

  19.    </properties>

  20.  

  21.    <dependencies>

  22.        <!-- Spring Boot 依赖、其他依赖 -->

  23.    </dependencies>

  24.  

  25.    <!-- 构建 -->

  26.    <build>

  27.        <plugins>

  28.            <plugin>

  29.                <groupId>org.springframework.boot</groupId>

  30.                <artifactId>spring-boot-maven-plugin</artifactId>

  31.            </plugin>

  32.        </plugins>

  33.    </build>

  34.  

  35. </project>

微服务多 Spring Boot 应用依赖关系管理

  • 蓝色:仅 pom.xml 文件,无代码

  • 黄色:包含 pom.xml 文件,一些具有通用性的代码,如工具类等

  • 绿色:Spring Boot 应用工程,含有启动类,与上述单体应用类似

蓝色:自定义 Parent

为避免微服务下包的滥用,应该统一管理第三方依赖的版本,同时为了方便 mvn deploy 操作,可以加上公司内部 Maven 私服的信息。

  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <project xmlns="http://maven.apache.org/POM/4.0.0"

  3.         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  4.         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  5.    <modelVersion>4.0.0</modelVersion>

  6.  

  7.    <!-- 自定义 Parent -->

  8.    <groupId>com.anoyi</groupId>

  9.    <artifactId>parent</artifactId>

  10.    <version>1.0.0.RELEASE</version>

  11.    <packaging>pom</packaging>

  12.  

  13.    <!-- 继承 Spring Boot -->

  14.    <parent>

  15.        <groupId>org.springframework.boot</groupId>

  16.        <artifactId>spring-boot-starter-parent</artifactId>

  17.        <version>2.0.2.RELEASE</version>

  18.    </parent>

  19.  

  20.    <properties>

  21.        <!-- 第三方依赖版本号 -->

  22.        <common.version>1.0.0.RELEASE</commont.version>

  23.    </properties>

  24.  

  25.    <dependencyManagement>

  26.        <dependencies>

  27.            <!-- 第三方依赖 -->

  28.            <dependency>

  29.                <groupId>com.anoyi</groupId>

  30.                <artifactId>common</artifactId>

  31.                <version>${common.version}</version>

  32.            </dependency>

  33.        </dependencies>

  34.    </dependencyManagement>

  35.  

  36.    <!-- 公司内部私有 Maven 仓库 -->

  37.    <distributionManagement>

  38.        <repository>

  39.            <id>central</id>

  40.            <name>*****</name>

  41.            <url>*****</url>

  42.        </repository>

  43.    </distributionManagement>

  44.  

  45. </project>

常用操作

  1. # 安装到本地、推送到 Maven 私服

  2. mvn clean install deploy

黄色:自定义依赖

比如一些通用的工具类包,为了避免代码在不用项目的复制,可以制作成一个 Maven 模块打包,用于其他项目引用。如果这个工具包还依赖了一些其他包,可以在上述 Parent 中统一管理这些包的版本。

  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <project xmlns="http://maven.apache.org/POM/4.0.0"

  3.         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  4.         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  5.    <modelVersion>4.0.0</modelVersion>

  6.  

  7.    <groupId>com.anoyi</groupId>

  8.    <artifactId>common</artifactId>

  9.    <version>1.0.0.RELEASE</version>

  10.    <packaging>jar</packaging>

  11.  

  12.    <parent>

  13.        <groupId>com.anoyi</groupId>

  14.        <artifactId>parent</artifactId>

  15.        <version>1.0.0.RELEASE</version>

  16.    </parent>

  17.  

  18.    <!-- 其他属性配置 -->

  19.    <properties>

  20.         <!-- 可选填 -->

  21.    </properties>

  22.  

  23.    <!-- 公共依赖 -->

  24.    <dependencies>

  25.  

  26.        <!-- 框架 -->

  27.        <dependency>

  28.            <groupId>org.springframework.boot</groupId>

  29.            <artifactId>spring-boot-starter-web</artifactId>

  30.        </dependency>

  31.  

  32.        <!-- 工具类 -->

  33.        <dependency>

  34.            <groupId>com.alibaba</groupId>

  35.            <artifactId>fastjson</artifactId>

  36.        </dependency>

  37.  

  38.        <!-- 其他依赖 -->

  39.  

  40.    </dependencies>

  41.  

  42. </project>

常用操作

  1. # 安装到本地、推送到 Maven 私服

  2. mvn clean install deploy

构建出来的 jar 包中仅包含编译后的 class 文件及依赖关系,非常轻量!

绿色:Spring Boot Application

最终的目标是构建出可运行的 jar 包,就需要打包所有依赖的代码文件到一起,使用 Spring Boot Maven 插件就能轻易完成。

  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <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">

  3.    <modelVersion>4.0.0</modelVersion>

  4.  

  5.    <groupId>com.anoyi</groupId>

  6.    <artifactId>server-general</artifactId>

  7.    <version>1.0-SNAPSHOT</version>

  8.  

  9.    <!-- 自定义 Parent 工程 -->

  10.    <parent>

  11.        <groupId>com.anoyi</groupId>

  12.        <artifactId>parent</artifactId>

  13.        <version>1.0.0.RELEASE</version>

  14.    </parent>

  15.  

  16.    <dependencies>

  17.  

  18.        <!-- Spring Boot 依赖、自定义依赖 或 其他依赖 -->

  19.        <dependency>

  20.            <groupId>com.anoyi</groupId>

  21.            <artifactId>common</artifactId>

  22.        </dependency>

  23.  

  24.    </dependencies>

  25.  

  26.    <!-- 构建可执行的 jar 包 -->

  27.    <build>

  28.        <plugins>

  29.            <plugin>

  30.                <groupId>org.springframework.boot</groupId>

  31.                <artifactId>spring-boot-maven-plugin</artifactId>

  32.            </plugin>

  33.        </plugins>

  34.    </build>

  35.  

  36. </project>

常用操作

  1. # 构建可执行 jar 包到 target 目录

  2. mvn clean package

业务代码复用

解耦业务,合理拆分微服务模块,使用 RPC 框架,能有效的复用代码。

轻量级微服务架构,容器化环境,PRC 框架可以使用 spring-boot-starter-grpc

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值