Maven(SNAPSHOT)

Maven介绍 

maven是什么:工具和软件
maven为什么服务:Java
主要功能:构建管理 依赖管理
GAVP
主版本号(模块变).次版本号(功能变).修订号(修复bug)

 依赖传递与依赖冲突

依赖传递:导入依赖会自动导入依赖的依赖(Compile Dependencies依赖的依赖)
    简化依赖导入、确保版本无冲突
依赖冲突:当发生重复依赖导入,会终止依赖传递,避免循环依赖和重复依赖的问题
    依赖冲突的解决原则:
        第一原则:谁短谁优先(引用路径长度)
            A-->C-->B1.0
            F-->B2.0  结果:A C F B2.0
        第二原则:谁上谁优先
            A-->B1.0
            F-->B2.0  结果:A B1.0
        若:
            A1.1-->B1.2-->C1.1
            F2.2-->B2.2
            Pom声明:
                F2.2
                A1.1
                B2.2
            最终结果:没有C1.1,只要发生冲突了,后续所有的依赖传递全部终止
依赖传递
依赖排除
    <dependency>
        <groupId>com.example</groupId>
        <artifactId>maven-projectB</artifactId>
        <version>1.0-SNAPSHOT</version>
        <scope>compile<scope>
        依赖排除
        <exclusions>
            <exclusion>
                <groupId>junit<groupId>
                <artifactId>junit</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
<scope>控制作用范围
    compile默认 主程序 测试程序 打包运行 例:log4j
    test 测试程序 junit
    provided 主程序 测试程序 servlet-api
    runtime 测试程序 打包运行 jdbc
maven下载失败:访问本地仓库没有,不访问阿里镜像的问题,本地仓库被污染
    gav-->磁盘依赖位置-->删除lastUpdated文件
maven命令在项目根路径运行

Maven的生命周期

    Maven有3套相互独立的生命周期,同一个生命周期中按序执行
        clean:清理工作
        default:核心工作,如:编译 测试 打包 安装 部署
        site:生成报告,发布站点   

分模式开发


继承:
    继承关系:
        继承描述的是两个工程之间的关系,与Java继承类似,子工程可以继承父工程的配置信息,常见于依赖关系的继承
        实现:<parent></parent>
        继承关系的实现:
            1.创建maven模块,该工程为父工程,设置打包方式为pom(默认是jar),继承spring-boot-starter-parent
                <packaging>pom</packaging>
                maven常见打包方式:
                    jar:普通模块打包,其他模块可引用,springboot项目基本都是jar包,内嵌tomcat,jar指令就能运行
                    war:普通web程序打包(原始的springmvc程序打包方式),需要部署在外部的tomcat服务器才能执行
                    pom:父工程或聚合工程,该模块不写代码,仅进行依赖管理
            2.在子工程pom文件中,配置继承关系
            3.在父工程中配置各个工程共有的依赖
    <parent>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
        <artifactId>tlias-parent</artifactId>
        <relativePath>../tlias-parent/pom.xml</relativePath>
    </parent>
        若父子工程配置了同一个不同版本的依赖,以子工程为准
        <relativePath/> 不配置从仓库中加载
    版本锁定:
        可以在父工程中通过<dependencyManagement>统一管理依赖版本,子工程引入依赖时不用声明版本
        <dependencyManagement>
            <dep...
                <dep...>
                    <groupId>
                    <artifactId>
                    <version>${lombok.version}</version>
                </dep...>
        </dependencyManagement>
        自定义属性,集中维护版本
        <properties>
            <lombok.version>1.28.24<lombok.version>
        </properties>
        <dependencyManagement>和<dependencies>的区别:
            <dependencies>直接依赖,在父工程中配置了依赖,子工程会直接继承下来
            <dependencyManagement>是统一管理依赖版本,不会直接依赖,还需要在子工程引入所需依赖
聚合:
    将多个模块组织成一个整体,同时对项目进行构建
    聚合工程:一个不具有业务功能的空工程(有且仅有一个pom文件)(就是父工程)
    在聚合工程中通过<modules>设置当前聚合工程所包含的子模块名称:
        <modules>
            <module>路径</module>
        </modules>
        
    <modules>
        <module>../tlias-pojo</module>
        <module>../tlias-utils</module>
        <module>../tlias-web-management</module>
    </modules>

私服

   私服是一种特殊的远程仓库,架设在局域网内部的仓库服务,用来代理位于外部的中央仓库,用于解决内部的资源共享和资源同步问题。
   依赖查找顺序:
      本地仓库-私服-中央仓库
   资源上传与下载:
      安装(install)-发布(deploy)
      release:稳定版
      snapshot:快照版

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值