Maven高级

目录

模块设计

起因

思想

注意

继承和聚合

继承

作用

实现

子工程

父工程

Maven打包方式

注意

版本锁定

注意

属性配置

自定义属性

引用属性

面试题

聚合

聚合工程

作用

实现

继承与聚合对比

作用

相同点

不同点

多环境

私服(会使用即可)

依赖查找顺序

资源上传与下载

注意


模块设计

起因

不方便项目的维护和管理,项目中的通用组件难以复用

思想

将项目按照功能/结构拆分成若干子模块,方便管理维护,拓展,模块的互相调用,资源共享

注意

先针对模块功能进行设计,再进行编码。不会先将工程开发完毕,然后进行拆分。

文件夹中带有.idea说明是项目,没有的则是模块,项目可以变成模块,可以将.idea删除,target文件,.mil文件删除,放到另一个项目中就变成了模块

继承和聚合

继承

两个工程之间的关系

作用

简化依赖配置,统一管理依赖

实现

子工程

<parent><!-- 写的是要继承的父类坐标 -->
    <groupId>...</groupId>
    <artifactId>...</artifactId>
    <version>...</version>
    <relativePath>....</relativePath>
</parent>

父工程

需要引入父工程spring-boot-starter-parent

并规定打包方式<packaging>pom</packaging>

Maven打包方式

jar:普通模块打包,springboot项目基本都是jar包(内嵌tomcat运行)

war:普通web程序打包,需要部署在外部的tomcat服务器中运行

pom:父工程或聚合工程,该模块不写代码,仅进行依赖管理(里面仅留pom.xml,和iml文件)

注意

在子工程中,配置了继承关系之后,坐标中的groupId是可以省略的,因为会自动继承父工程的 。

relativePath指定父工程的pom文件的相对位置(如果不指定,将从本地仓库/远程仓库查找该工程)。

../ 代表的上一级目录

版本锁定

在maven中,可以在父工程的pom文件中通过 <dependencyManagement>来统一管理依赖版本。

注意

在父工程中所配置的 <dependencyManagement>只能统一管理依赖版本,并不会将这个依赖直接引入进来。 这点和 <dependencies> 是不同的。

子工程要使用这个依赖,还是需要引入的,只是此时就无需指定 <version>版本号了,父工程统一管理。变更依赖版本,只需在父工程中统一变更。

属性配置

通过自定义属性及属性引用的形式,在父工程中将依赖的版本号进行集中管理维护

自定义属性

<properties>
    <lombok.version>1.18.24</lombok.version>
</properties>

引用属性

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>${lombok.version}</version>
</dependency>

面试题

<dependencyManagement> 与 <dependencies> 的区别是什么?

<dependencies> 是直接依赖,在父工程配置了依赖,子工程会直接继承下来。 

<dependencyManagement> 是统一管理依赖版本,不会直接依赖,还需要在子工程中引入所需依赖(无需指定版本)

聚合

将多个模块组织成一个整体,同时进行项目的构建

聚合工程

一个不具有业务功能的“空”工程(有且仅有一个pom文件) 一般继承关系中的父工程与聚合关系中的聚合工程是同一个

作用

快速构建项目(无需根据依赖关系手动构建,直接在聚合工程上构建即可)

实现

通过 <moudules> 设置当前聚合工程所包含的子模块的名称。

<!--聚合其他模块-->
<modules>
    <module>../tlias-pojo</module>
    <module>../tlias-utils</module>
    <module>../tlias-web-management</module>
</modules>

继承与聚合对比

作用

聚合用于快速构建项目

继承用于简化依赖配置、统一管理依赖

相同点

聚合与继承的pom.xml文件打包方式均为pom,通常将两种关系制作到同一个pom文件中

聚合与继承均属于设计型模块,并无实际的模块内容

不同点

聚合可以感知到参与聚合的模块有哪些

继承父模块无法感知哪些子模块继承了自己

多环境

命令启动

 

跳过测试

         

私服(会使用即可)

是一种特殊的远程仓库,它是架设在局域网内的仓库服务,用来代理位于外部的中央仓库,用于解决团队内部的资源共享与资源同步问题。

问同事要一个setting文件,修改本地地址即可

依赖查找顺序

本地仓库

私服仓库(先找本公司,再找阿里镜像)

中央仓库

资源上传与下载

第一步配置:在maven的配置文件中配置访问私服的用户名、密码。(在自己maven安装目录下的conf/settings.xml中的servers中配置)

<server>
    <id>maven-releases</id>
    <username>admin</username>
    <password>admin</password>
</server>
    
<server>
    <id>maven-snapshots</id>
    <username>admin</username>
    <password>admin</password>
</server>

第二步配置:在maven的配置文件中配置连接私服仓库组的地址(url地址)。(在自己maven安装目录下的conf/settings.xml中的mirrors、profiles中配置)

<mirror>
    <id>maven-public</id>
    <mirrorOf>*</mirrorOf>
    <url>http://192.168.150.101:8081/repository/maven-public/</url>
</mirror>

<profile>
    <id>allow-snapshots</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    <repositories>
        <repository>
            <id>maven-public</id>
            <url>http://192.168.150.101:8081/repository/maven-public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>
</profile>

第三步配置:在项目的pom.xml文件中配置上传资源的位置(url地址)。(直接在tlias-parent中配置发布地址)

<distributionManagement>
    <!-- release版本的发布地址 -->
    <repository>
        <id>maven-releases</id>
        <url>http://192.168.150.101:8081/repository/maven-releases/</url>
    </repository>

    <!-- snapshot版本的发布地址 -->
    <snapshotRepository>
        <id>maven-snapshots</id>
        <url>http://192.168.150.101:8081/repository/maven-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

配置完成之后,我们就可以在tlias-parent中执行**deploy**生命周期,将项目发布到私服仓库中。 

注意

snapshots会造成文件覆盖问题请注意!

点击这里查看更多知识

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值