JavaWeb学习笔记——第十五天

Maven高级

分模块设计与开发

  • 分模块设计就是将项目按照功能拆分成若干个子模块。
  • 优点:方便项目的管理维护、扩展,也方便模块间的相互调用,资源共享。
  • 分模块设计需要先针对模块功能进行设计,再进行编码实现。不会先将工程开发完毕,然后进行拆分。

继承与聚合

继承

  • 继承描述的是两个工程间的关系,与java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承。
  • 作用:简化依赖配置、统一管理依赖。
  • 实现:<parent> … </parent>

继承实现步骤

  1. 创建父工程Maven模块,设置打包方式pom(默认jar):在pom.xml中加上<packaging>pom</packaging>
打包方式 说明
jar 普通模块打包,springboot项目基本都是jar包(内嵌tomcat运行)
war 普通web程序打包,需要部署在外部的tomcat服务器中运行
pom 父工程或聚合工程,该模块不写代码,仅进行依赖管理
  1. 在子工程的pom.xml文件中,配置继承关系。
  2. 在父工程中配置各个工程共有的依赖(子工程会自动继承父工程的依赖)。
注意事项
  • Maven中不支持多继承,但支持多重继承。
  • 在子工程中,配置了继承关系之后,坐标中的groupId是可以省略的,因为会自动继承父工程的 。
  • 子工程中需要指定父工程的相对位置:<relativePath>父工程的相对位置</relativePath>,默认为../pom.xml,如果使用<relativePath/>或不指定则会从本地仓库或远程仓库中查找这个父工程。
  • 若父子工程都配置了同一个依赖的不同版本,以子工程的为准。

版本锁定

  • 在Maven中,可以在父工程的pom文件中通过 <dependencyManagement> 来统一管理依赖版本,在这个标签中指定的依赖不会被引入。
<dependencyManagement>
    <dependencies>
        <!--引入依赖-->
    </dependencies>
</dependencyManagement>
  • 子工程引入依赖时,无需指定 <version> 版本号,父工程统一管理。变更依赖版本,只需在父工程中统一变更。
自定义属性/引用属性
  • 可以在父工程的pom文件中通过 <properties> 来自定义依赖版本属性,如:
<properties>
    <自定义标签名>版本号</自定义标签名>
</properties>
  • 然后可以在父工程和子工程的pom文件中使用<version>${自定义标签名}</version>引用这个依赖。

聚合

  • 聚合就是将多个模块组织成一个整体,同时进行项目的构建。
  • 聚合工程必须是一个不具有业务功能的“空”工程(有且仅有一个pom文件)。
  • 作用:快速构建项目(无需根据依赖关系手动构建,直接在聚合工程上构建即可)。

使用方法

  • 通过 <modules> 设置当前聚合工程所包含的子模块名称:
<!--聚合-->
<modules>
    <module>模块相对路径</module>
    <module>模块相对路径</module>
    ...
</modules>
  • 聚合工程中所包含的模块,在构建时,会自动根据模块间的依赖关系设置构建顺序,与聚合工程中模块的配置书写位置无关。

继承与聚合的比较

继承 聚合
作用 用于快速构建项目 用于简化依赖配置、统一管理依赖
相同点 聚合与继承的pom.xml文件打包方式均为pom,一般都将两种关系制作到同一个pom文件中
聚合与继承均属于设计型模块,并无实际的模块内容
不同点 聚合是在聚合工程中配置关系,聚合可以感知到参与聚合的模块有哪些 继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己

私服

  • 私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,用来代理位于外部的中央仓库,用于解决团队内部的资源共享与资源同步问题。
  • 依赖查找顺序:本地仓库 → 私服 → 中央仓库。
  • 私服在企业项目开发中,一个项目/公司,只需要一台即可。
  • 私服中有多个仓库,这些仓库分为三种:
    • RELEASE:存放上传的RELEASE版jar包。
    • SNAPSHOT:存放上传的SNAPSHOT版jar包。
    • CENTRAL:存放从中央仓库下载的jar包。
  • 项目版本:
    • RELEASE(发行版本):功能趋于稳定、当前更新停止,可以用于发行的版本,存储在私服中的RELEASE仓库中。
    • SNAPSHOT(快照版本):功能不稳定、尚处于开发中的版本,即快照版本,存储在私服的SNAPSHOT仓库中。

资源上传与下载

私服的配置

在Maven的settings.xml配置文件中,做如下配置:

  1. 在servers标签中,配置访问私服的个人凭证(访问的用户名和密码):
<server>
    <id>release仓库名</id>
    <username>用户名</username>
    <password>密码</password>
</server>
    
<server>
    <id>snapshot仓库名</id>
    <username>用户名</username>
    <password>密码</password>
</server>
  1. 在mirrors中只配置我们自己私服的连接地址(如果之前配置过阿里云,需要直接替换掉):
<mirror>
    <id>私服名</id>
    <mirrorOf>*</mirrorOf>
    <url>私服地址</url>
</mirror>
  1. 在profiles中,增加如下配置,来指定snapshot快照版本的依赖,依然允许使用:
<profile>
    <id>allow-snapshots</id>
        <activation>
        	<activeByDefault>true</activeByDefault>
        </activation>
    <repositories>
        <repository>
            <id>私服名</id>
            <url>私服地址</url>
            <releases>
            	<enabled>true</enabled>
            </releases>
            <snapshots>
            	<enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>
</profile>
  1. 如果需要上传自己的项目到私服上,需要在项目的pom.xml文件中,增加如下配置,来配置项目发布的地址(也就是私服的地址):
<distributionManagement>
    <!-- release版本的发布地址 -->
    <repository>
        <id>release仓库名</id>
        <url>release仓库地址</url>
    </repository>
    
    <!-- snapshot版本的发布地址 -->
    <snapshotRepository>
        <id>snapshot仓库名</id>
        <url>snapshot仓库地址</url>
    </snapshotRepository>
</distributionManagement>

资源上传

直接运行 deploy 生命周期即可 (发布时,建议跳过单元测试)。

资源下载

直接在pom文件中引入依赖即可。

posted @ 2024-04-05 13:40  zgg1h  阅读(51)  评论(0)    收藏  举报