maven介绍

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


maven是什么,用来干什么?

  • 管理和构建maven项目的工具
  • 有三大模块:项目对象模型,依赖管理模型,构建生命周期模型
  • 作用:依赖的管理(简化导入jar包,使用统一管理的jar和其版本)
    项目的构建:快速的进行项目的构建,实行一键式项目构建
    统一化项目结构:只要是maven创建的项目文件结构都是一致的,可移植性很强

依赖管理

通过坐标来对资源进行唯一标识,格式为:
 <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

怎么来找jar包相应坐标呢?
https://mvnrepository.com/

依赖管理是怎么实现jar的导入和加载的呢?
当导入坐标后,reload 会查询本地仓库是否有该jar包,如果没有,会去配置的私服查找是否有该jar包,有然后放回本地仓库,再导入,没有,去中央仓库进行查找,然后放到本地仓库,再导入

当导入的jar包过多后本地仓库会难以维护,怎么来管理本地仓库呢?

jar之间相互依赖,会怎么样?
依赖传递:
直接依赖:项目直接依赖的资源
间接依赖:被依赖的资源又依赖其他资源,其他资源被称为间接依赖
可选依赖:使用optional隐藏间接依赖,阻值依赖传递
排除依赖:主动断开依赖的资源 和直接依赖中加入坐标多加一个标签
当项目pom文件导入直接依赖的坐标,间接依赖也会跟着自动导入
依赖冲突的优先级:
间接依赖中:
路径优先:就近原则(层次越浅)
声明优先:同层次,谁先声明,谁生效
直接依赖中:
后配置的版本覆盖先配置的版本
依赖的范围?
默认 全局有效 test 测试有效 provided 主程序和测试有效 runtime 测试和运行时有效

生命周期

生命周期:
            一次项目构建
            3套
            clean 清理  default(核心工作):编译,测试,打包,安装,部署 site 生成报告,发布站点
            clean (pre-clean  clean  post-clean )  target文件夹是构建后的一些文件 删除构建后的文件
            default (compile test package install ) install 安装打好的jar包到本地仓库
              lifecycle 中的执行流程是有顺序的,当执行后面的流程,前面会自动执行
                 maven是一个插件执行框架,各个执行周期都绑定了相关的插件
        自定插件: 在pom文件中<build> <plugins> <plugin> <configuration><skipTests>(这个是用来跳过测试的)
        也可通过图标进行跳过

导入maven项目

  导入maven:
                右侧maven面板点击加号 选中要导入的项目文件夹或者项目文件中的pom文件`3

maven项目的分模块构建

当一个项目比较大的时候就需要进行模块的拆分
而当拆分后,模块之间可能存在公共依赖
就可以使用模块继承的思想:公共依赖抽取到父工程中(用以简化依赖的配置)
在子模块中想使用父模块的依赖,就需要添加父工程依赖

 <parent>
        <groupId>com.zhou</groupId>
        <artifactId>maven_use</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
  • 而各个模块之间应该怎么统一一个依赖的版本,就可以在父工程中使用
    dependencyManagement>标签来固定版本,之后使用就不需要进行版本version的指定,

  • 而当dependencymanagement中标签过多的时候, 要想修改一个版本号是很麻烦的,就可以使用properties中自定义标签进行版版的指定,在需要指定版本的地方使用${自定义标签} ,就可以统一对版本进行管理

  • 而当我们分模块之后,可能会出现这个模块需要依赖那个模块,你要install这个模块之间,就先将另外一个进行打包,当模块过多的时候就会导致很多麻烦的事情,这时候就可以通过聚合的方式来进行项目的构建

  • 聚合是用来快速,自动化构建项目的(就可以不用关心模块之间的相互依赖的问题)在父工程中使用标签modules>module>来指定统一管理的某块,就相当于把他们看做了一个整体

  • 当模块构建好后需要打包到公司私服上,就需要指定私服的地址,到哪个仓库中

一个是发行版地址设置,一个是测试版地址设置

    <distributionManagement>
        <snapshotRepository>
            <id></id>
            <url></url>
        </snapshotRepository>
        <repository>
            <id></id>
            <url></url>
        </repository>
    </distributionManagement>

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值