继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

aluckdog
关注TA
已关注
手记 449
粉丝 68
获赞 393

单体 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



作者:Anoyi
链接:https://www.jianshu.com/p/7c9237e6575a

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP