提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
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提供了大量能使我们快速便捷地处理数据的函数和方法。