【学习总结|DAY034】Maven高级

在 Web 后端开发中,Maven 作为强大的项目管理工具,其高级特性对于优化项目结构、提高开发效率至关重要。本文将结合实际代码示例,深入介绍 Maven 的分模块设计与开发、继承与聚合以及私服相关知识。

一、分模块设计与开发

(一)为什么要分模块设计

将项目按功能拆分为多个子模块,能极大提升项目的可维护性、扩展性,方便模块间调用与资源共享。以电商项目为例,若将商品、搜索、购物车、订单等功能混在一个模块,代码会变得臃肿,维护困难,复用性也差。

(二)分模块设计策略

  1. 按功能模块拆分:划分出公共组件、商品模块、搜索模块等。如在电商项目中,mall-common作为公共组件模块,mall-goods负责商品相关功能。
  2. 按层拆分:分为公共组件、实体类、控制层、业务层、数据访问层等,像mall-controller为控制层模块,mall-mapper用于数据访问。
  3. 按功能模块 + 层拆分:结合上述两种方式,如mall-goods-controller负责商品模块的控制层逻辑。

(三)分模块开发实战

tlias项目为例,创建maven模块:

  1. 创建tlias-pojo模块:用于存放实体类。在src/main/java目录下创建实体类,如User.java
public class User {
    private Long id;
    private String username;
    private String password;
    // 省略getter和setter方法
}

  1. 创建tlias-utils模块:存放工具类。例如创建一个日期工具类DateUtil.java
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtil {
    public static String formatDate(Date date) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return sdf.format(date);
    }
}

开发时需先进行模块功能设计,再编码,避免先开发完整工程再拆分。

二、继承与聚合

(一)继承

  1. 概念与作用:Maven 中的继承类似 Java 继承,子工程可继承父工程配置,主要用于简化依赖配置和统一管理依赖。
  2. 实现步骤
    • 创建父工程tlias-parent:设置打包方式为pom,并继承spring-boot-starter-parentpom.xml配置如下:

    org.springframework.boot
    spring-boot-starter-parent
    3.1.3
    

com.itheima
tlias-parent
1.0-SNAPSHOT
pom

  • 配置子工程继承关系:在子工程(如tlias-pojo)的pom.xml中添加:

    com.itheima
    tlias-parent
    1.0-SNAPSHOT
    ../tlias-parent/pom.xml

com.itheima
tlias-pojo
1.0-SNAPSHOT

  • 在父工程配置共有依赖:比如添加lombok依赖:

    
        org.projectlombok
        lombok
        1.18.34
    

子工程会自动继承该依赖。若父子工程依赖版本冲突,以子工程为准。

(二)版本锁定

在父工程的pom.xml中使用统一管理依赖版本。例如管理JWT令牌版本:


    
        
        
            io.jsonwebtoken
            jjwt
            0.9.1
        
    

子工程引入依赖时无需指定版本号:


    
        io.jsonwebtoken
        jjwt
    

还可通过自定义属性进一步管理版本,如:


    1.18.30
    0.9.1


    
        org.projectlombok
        lombok
        ${lombok.version}
    


    
        
        
            io.jsonwebtoken
            jjwt
            ${jjwt.version}
        
    

(三)聚合

  1. 概念与作用:聚合是将多个模块组织成整体,同时构建项目。聚合工程是无业务功能的 “空” 工程,仅含pom文件,可快速构建项目。
  2. 实现方式:在父工程(聚合工程)的pom.xml中使用配置子模块:

    ../tlias-pojo
    ../tlias-utils
    ../tlias-web-management

构建时,模块会按依赖关系自动排序,与配置顺序无关。

三、私服

(一)私服介绍

私服是架设在局域网内的仓库服务,代理中央仓库,解决团队内部资源共享与同步问题。依赖查找顺序为:本地仓库 -> 私服 -> 中央仓库。在企业开发中,通常一个项目或公司只需一台私服。

(二)资源上传与下载

  1. 设置访问用户名 / 密码:在settings.xml中配置:

    maven-releases
    admin
    admin


    maven-snapshots
    admin
    admin

  1. 配置上传地址:在 IDEA 的maven工程pom.xml中添加:

    
        maven-releases
        http://192.168.150.101:8081/repository/maven-releases/
    
    
        maven-snapshots
        http://192.168.150.101:8081/repository/maven-snapshots/
    

  1. 设置依赖下载仓库组地址:在settings.xml中配置:

    maven-public
    *
    http://192.168.150.101:8081/repository/maven-public/


    allow-snapshots
    
        true
    
    
        
            maven-public
            http://192.168.150.101:8081/repository/maven-public/
            
                true
            
            
                true
            
        
    

项目版本分为RELEASE(发行版本,存于RELEASE仓库)和SNAPSHOT(快照版本,存于SNAPSHOT仓库),可通过installdeploy命令进行资源上传。

你可能感兴趣的:(学习,maven,java)