Loading

尚硅谷 maven

Maven是目前最流行的自动化构建工具,对于生产环境下多框架、多模块整合开发有着重要作用,Maven是一款在大型项目开发过程中不可或缺的重要工具

一、目前掌握的技术

4(pu4u5aixtf

 

二、生产环境下开发对maven的需求

1、一个项目就是一个工程

如果项目非常大,就不适合继续使用package来划分。而是每个模块对应一个工程

分工,协作。

* 借助于maven,就可以将一个项目拆分成多个工程!!!

2、项目中的jar包必须手动黏贴到 WEB-INFO下的lib目录中

导致的问题:同样的jar包文件会重复出现在不同的项目工程中,一方面浪费存储空

间,一方面也让项目比较臃肿

借助于maven,可以将jar包仅仅保存在仓库中,有需要使用的工程,引用这个文件

接口,并不需要真的把jar包复制过来

3、jar包需要自己下载

借助于maven可以以一种非常规范的方式来下载jar包。因为所有知名的框架

或者第三方工具的jar包已经按照统一的规范放在了中央仓库中!

4、jar包依赖的其他jar包,需要自己手动加入到项目中

如果jar包之间的依赖关系都需要程序员自己非常清楚的了解,就会极大地增

加学习成本

 

三、构建的概念

1、maven是一款服务于java平台的自动化构建工具

gradle

2、什么是构建?

编译 --> 部署 --> 运行

 

3、运行时环境

~g%a__9ja_(3

运行时环境 其实是一组jar包的引用,并没有将jar包本身copy到工程中,所以不是目录!!

其中 :

jre system library ==> jdk 中的核心jar包

apache tomcat v6.0 ===> 和tomcat 相关的包

 

ujy4h})%`4mw

一个BS项目最终运行的不是动态web工程本身,而是这个web工程 "编译的结果”

 

构建过程中的各个环节

【1】清理 :将以前编译得到的旧的class字节码文件删除,为下一次编译做准备

【2】编译:将java源程序编译成class字节码文件

【3】测试:自动测试,自动调用junit程序

【4】报告:测试程序的执行结果

【5】打包:动态web工程打成war包,jar工程打成jar包

【6】安装:maven的特定概念==》将打包得到的文件复制到“仓库”中的指定位置

【7】部署:将动态web工程生成的war包复制到servlet容器的指定目录下,使其可以运行

maven 可以进行自动化构建

 

四、安装:

1、检查 JAVA_HOME 环境变量 (为什么?maven是通过java编写的!!)

1591423740(1)

2、解压Maven核心程序的压缩包,放在一个非中文无空格的环境下

3、配置Maven 相关的环境变量

1591423912(1)

4、通过 mvn -v 命令查看maven版本 判断是否安装成功!!

1591423651(1)

 

五、Maven的核心概念

1、约定的目录结构

2、pom

3、坐标

4、依赖

5、仓库

6、声明周期、插件、目标

7、继承

8、聚合

 

六、第一个Maven工程

1、创建约定的目录结果

1591428119(1)

1)根目录:工程名

2)src目录:存放源码

3)pom.xml :Maven工程的核心配置文件

4)main 目录:存放主程序

5)test目录:存放测试程序

6)java目录:存放java源文件

7)resource:存放框架或者其他工具的配置文件

 

2、为什么要遵守约定的目录结构

1)Maven负责我们项目的自动化构建,以编译为例,Maven要想进行编译,那他必须知道

java源文件保存在哪

2)如果我们自定义的东西想要让框架知道,有两种办法

①以配置的方式明确告诉框架

1591426180(1)

②遵循框架内部存在的约定

log4j.properties

 

七、常用maven命令

1)注意:执行与构建过程相关的maven命令,必须进入pom.xml所在的目录

与构建过程相关:编译 测试 打包

 

2)常用命令:

【1】mvn clean :清理

【2】mvn compile: 编译主程序

【3】mvn test-compile :编译测试程序

【4】mvn test : 执行测试

【5】maven package :打包

 

八、关于联网问题

1)maven的核心程序中仅仅定义了抽象的生命周期,具体的工作必须由特定的插件来完成,

而插件本身并不包含在Maven的核心程序中

2)当我们执行的Maven命令需要用到插件时,Maven核心程序会先到本地仓库中去查找

3)本地仓库的位置 \.m2\respository

4) maven核心程序在本地仓库中 找不到需要的插件,会自动连接外网,到中央仓库中下载

5)如果不能联网,则构建失败

6) 修改默认本地仓库的位置,让Maven核心程序去我们指定的目录下寻找插件

 

九、POM

1、含义:project object model 项目对象模型

2、pom.xml对于Maven工程是核心配置文件,与构建过程有关的一切配置都是在这里配置的

 

十、坐标

1、maven中的坐标:

使用下面三个向量在仓库中唯一定位一个maven工程

1)groupid :公司或组织的域名倒叙+ 项目名

2)artifactid : 模块名

3)version:版本

2、Maven工程的坐标与仓库中路径的对应关系

1591496959(1)

 

十一、仓库

1、分类:

1)本地仓库:当前电脑上部署的仓库服务

2)远程仓库:

① 私服 : 搭建在局域网环境中,为局域网内的所有Maven工程服务

1591497202(1)

②中央仓库:架设在internet上,为全世界所有的Maven工程服务

③中央仓库的镜像:为了分担中央仓库的流量,用于提升用户的访问速度

2、仓库中保存的内容:Maven工程

1)Maven自身所需要的插件

2)第三方框架或者工具的jar包

3)我么自己开发的maven工程

 

十二、依赖

1、Maven解析依赖信息时,会到本地仓库中查找被依赖的jar包

对于我们自己开发的maven工程,使用mvn install 将其打包装进仓库

 

2、依赖的范围

1591499414(1)

1) compile 范围依赖

对主程序是否有效? 有效

对测试程序是否有效? 有效

是否参与打包? 参与

1591499616(1)

2)test范围依赖

对主程序是否有效? 无效

对测试程序是否有效? 有效

是否参与打包? 不参与

典型例子 : junit

3) provided 范围依赖: 有些jar包,在开发的时候需要,但是部署和运行的时候不需要

对主程序是否有效? 无效

对测试程序是否有效? 有效

是否参与打包? 不参与

是否参与部署? 不参与

典型例子 : servlet-api.jar

1591499592(1)

 

十三、生命周期

1、什么是maven的生命周期?

各个构建环节的顺序:不能打乱顺序,必须按照既定的正确顺序来执行

 

2、maven的核心程序中定义了抽象的生命周期,生命周期中各个阶段的具体任务

是由插件完成的

 

3、maven不论现在执行的是生命周期的哪个阶段,都是从生命周期中最初的位置

开始执行的

1591614381(1)

4、插件和目标

1)生命周期的各个阶段仅仅定义了要执行的任务是什么

2)各个阶段和插件目标是对应的

3)相似的目标由特定的插件来完成

 

十四、在Eclipse中使用maven

1、设置maven的安装目录

1591618796(1)

2、设置user setting文件

1591618737(1)

3、基本操作

1)创建maven版的java工程

2)创建maven版的web工程

3)执行maven命令

 

十五、依赖【高级】

1、依赖的传递性

优点:可以传递的依赖,不必在每个模块工程中重复声明

【注意】 非compile类型的依赖不能传递,所以在各个工程模块中,有需要就得重复声明

 

2、依赖排除

5wzy3}gs2o`1

[2] 依赖排除的设置方式

aq46)}jqk9k8

 

3、依赖的原则说明

clipboard

 

 

4、统一管理依赖的版本

建议配置方式

1)在properties 内,同意声明版本号

2)在需要统一版本的位置,使用 ${自定义标签名} 引用声明的版本号

clipboard

clipboard

 

十五、继承

1、现状

clipboard

2、统一管理各个模块工程中对junit版本的依赖

 

3、解决思路

将junit依赖版本统一提取到父工程中, 在子工程中声明junit依赖时,不指定版本,‘

以父工程统一设定的为准

 

4、操作

1) 创建一个Maven工程作为父工程,主要打包的方式为pom

2) 在子工程中声明对父工程的引用

clipboard

3)将子工程中坐标与父工程中坐标 重复的部分删除

4)在父工程中统一配置依赖

clipboard

5)在子工程中删除junit依赖的版本号

 

十六、聚合

1、作用:一键安装各个模块的工程

2、配置方式:在一个总的聚合工程中,配置各个参与的模块

))j`x6ipb5(t

posted @ 2020-06-11 10:21  青岑  阅读(318)  评论(0编辑  收藏  举报