Maven高级

Java教程 2025-09-14

一. 分模块设计与开发

分模块设计的核心是 “高内聚,低耦合”。

  • 高内聚:一个模块只负责一个独立的、明确的职责(如:订单模块只处理所有订单相关业务)。模块内部的代码关联性非常强。
  • 低耦合:模块与模块之间的依赖关系尽可能的简单和清晰。一个模块的变化,应该尽量减少对其他模块的影响。

通过Maven,我们可以轻松地实现这一思想。每个模块都是一个独立的Maven项目,它们通过父子工程和依赖管理有机地组织在一起。

在这里插入图片描述 )


     org.example
     tlias-pojo
     1.0-SNAPSHOT


     org.example
     tlias-utils
     1.0-SNAPSHOT

分模块的好处

  • 代码清晰,职责分明:每个开发人员可以专注于自己的模块,易于理解和维护。
  • 并行开发,提升效率:多个模块可以由不同团队并行开发,只需约定好接口即可。
  • 构建加速:Maven支持仅构建更改的模块及其依赖模块(使用 mvn -pl 命令),大大节省构建时间。
  • 极高的复用性:像 core、dao 这样的模块,可以直接被其他新项目引用,避免重复造轮子。
  • 便于单元测试:可以针对单个业务模块进行独立的、深入的测试。

二. 继承

2.1 继承配置

tlias-pojo、tlias-utils、tlias-web-management 中都引入了一个依赖 lombok 的依赖。我们在三个模块中分别配置了一次。 在这里插入图片描述

我们可以再创建一个父工程 tlias-parent ,然后让上述的三个模块 tlias-pojo、tlias-utils、tlias-web-management 都来继承这个父工程 。 然后再将各个模块中都共有的依赖,都提取到父工程 tlias-parent中进行配置,只要子工程继承了父工程,依赖它也会继承下来,这样就无需在各个子工程中进行配置了。 在这里插入图片描述

Maven打包方式:

  • jar:普通模块打包,springboot项目基本都是jar包(内嵌tomcat运行)
  • war:普通web程序打包,需要部署在外部的tomcat服务器中运行
  • pom:父工程或聚合工程,该模块不写代码,仅进行依赖管理
pom

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


        org.example
        tlias-parent
        1.0-SNAPSHOT
        ../tilas-parent/pom.xml

2.2 版本锁定

如果项目拆分的模块比较多,每一次更换版本,我们都得找到这个项目中的每一个模块,一个一个的更改。 很容易就会出现,遗漏掉一个模块,忘记更换版本的情况。



    
       
    		
        		io.jsonwebtoken
        		jjwt
        		0.9.1
    		
    		······
    


    
    
        io.jsonwebtoken
        jjwt
    

2.3 自定义属性


    1.18.34


    org.projectlombok
    lombok
    ${lombok.version}

三. 聚合

在这里插入图片描述



    <module>你要聚合的模块路径module>

四. 私服

在这里插入图片描述 项目版本说明:

  • RELEASE(发布版本):功能趋于稳定、当前更新停止,可以用于发行的版本,存储在私服中的RELEASE仓库中。
  • SNAPSHOT(快照版本):功能不稳定、尚处于开发中的版本,即快照版本,存储在私服的SNAPSHOT仓库中。

4.1 私服下载

下载Nexus私服 help.sonatype.com/en/download… 在这里插入图片描述

在这里插入图片描述

在这里插入图片描述 私服仓库说明:

  • RELEASE:存储自己开发的RELEASE发布版本的资源。
  • SNAPSHOT:存储自己开发的SNAPSHOT发布版本的资源。
  • Central:存储的是从中央仓库下载下来的依赖

4.2 资源上传与下载


    <id>maven-releasesid>
    <username>adminusername>
    <password>adminpassword>

    
<server>
    <id>maven-snapshotsid>
    <username>adminusername>
    <password>adminpassword>
server>

    <id>maven-publicid>
    <mirrorOf>*mirrorOf>
    <url>http://localhost:8081/repository/maven-public/url>


    <id>allow-snapshotsid>
    <activation>
        <activeByDefault>trueactiveByDefault>
    activation>
    <repositories>
        <repository>
            <id>maven-publicid>
            <url>http://localhost:8081/repository/maven-public/url>
            <releases>
                <enabled>trueenabled>
            releases>
            <snapshots>
                <enabled>trueenabled>
            snapshots>
        repository>
    repositories>


    
    <repository>
        <id>maven-releasesid>
        <url>http://localhost:8081/repository/maven-releases/url>
    repository>
    
    <snapshotRepository>
        <id>maven-snapshotsid>
        <url>http://localhost:8081/repository/maven-snapshots/url>
    snapshotRepository>

在这里插入图片描述 由于当前我们的项目是SNAPSHOT版本,所以jar包是上传到了snapshot仓库中