Maven基础笔记,原理

1.什么是Maven

①Maven是一款实现自动化构建的工具软件。

②构建:从源程序→程序的执行

清理→编译→测试→报告→打包→部署→执行

③构建工具:Make→Ant→Maven→Gradle...

④Maven的运行机制是主程序调用插件实现具体功能,需要的插件需要联网下载才能使用

通过修改解压目录/conf/settings.xml文件中的localRepository标签的值可以修改默认的仓库目录

2.Maven自动化构建机制

1项目对象模型 Project Object Model

将项目理解为一个对象模型进行管理,与项目构建相关的所有信息保存在pom.xml配置文件中

2约定的目录结构

Maven之所能实现自动化的编译、测试等操作是基于约定的目录结构

3坐标

①用于在Maven的世界中唯一的定位到某一个“构建”

②坐标的组成

<groupId>com.atguigu.maven</groupId>

<artifactId>Hello</artifactId>

<version>0.0.1-SNAPSHOT</version>

<package>jar</package>

4依赖管理

①Maven构建查找它所依赖的JAR包时会首先到本地仓库中查找,如果仓库中没有则报错。

所依赖的构建必须安装到仓库中才能够被其他构建所使用

②依赖的概念:当前构建需要用到的其他的构建

③依赖的实现:通过目标构建的坐标引用所依赖的构建

④依赖的范围:

依赖的目标构建对当前工程当中的哪些类有效

compile:表示当前工程中的所有的类都需要使用这个JAR包

test:表示当前工程中只有测试的类依赖这个JAR包

provider:表示当前工程只在开发阶段依赖这个JAR包,部署后这个JAR包会由容器提供

例如:servlet-api

⑤依赖的原则

[1]路径最短者优先

[2]路径相同时先声明者优先

5仓库管理

①如何在仓库中查找构建

groupId+artifactId+version

com\atguigu\maven\Hello\0.0.1-SNAPSHOT

②仓库概念:Maven所有的构建存储的位置

③存储的内容:Maven的构建

[1]Maven自身的插件

[2]软件开发过程中使用Maven构建得到的程序模块

[3]大量第三方提供的JAR包

④仓库分类

[1]本地仓库

(1)运行于用户本机

(2)为当前主机上的所有的Maven构建提供依赖支持

[2]远程仓库

      (1)私服:在局域网中搭建的一个服务器,为当前局域网中的Maven构建服务

共享第三方JAR包

共享项目中的公共模块

(2)中央仓库

Maven为全世界程序开发人员搭建的总的服务器

(3)镜像仓库

分担中央仓库的压力,在各个大洲建立的镜像服务器

⑤Maven从仓库中查找构建的原则:从小到大的范围

6生命周期

①概念:项目从清理、编译等环节直到部署到服务器上运行所经历的整个过程

②三套独立的生命周期

[1]清理:执行项目清理的各个环节

[2]默认:执行项目从编译到部署的各个环节

[3]站点:执行项目信息站点自动生成的各个环节

③特点:执行生命周期中的任何一个阶段,Maven都会从这个周期最初的环节开始执行,

直到指定的环节

7插件和目标

①插件:Maven的所有功能都不是由主程序执行的,具体功能都是由插件完成的。

主程序只起调度的作用。

②Maven的插件本身也是Maven的构建,所以需要到Maven的仓库中查找

③Maven中有一部分插件是与生命周期直接相关的。每个插件都会有多个目标,

每个目标对应生命周期中的一个阶段。

8聚合和继承

①继承:将POM文件中的重复内容抽取出来放到父POM中,简化配置文件,

同时对整个项目所有的依赖的版本进行统一管理

②聚合:将多个构建模块聚合为一个工程,安装聚合工程就可以全部自动安装

 

时间: 2024-10-04 11:40:18

Maven基础笔记,原理的相关文章

REDIS基础笔记

Redis基础笔记 资源链接 简介 简介 安装 五种数据类型及相应命令 1. 字符串类型 2. 散列类型 3. 列表类型 4. 集合类型 5. 有序集合 其他 事务 SORT 生存时间 任务队列 发布/订阅模式 Python中使用Redis 实际实例 管理 其他 资源链接 推荐书籍:<Redis入门指南> 资源列表: redis命令速查command | CMD索引-中文 | CMD树-中文 redis源码github 下载地址redis.io The Little Redis book 入口

php代码审计基础笔记

出处: 九零SEC连接:http://forum.90sec.org/forum.php?mod=viewthread&tid=8059 ---------------------------------------------------------- team:xdsec&90sec author:wilson blog:http://blog.wils0n.cn/ 文章链接:wilson's blog_php代码审计基础笔记[求人气~~] ----------------------

Maven学习笔记之——坐标和依赖(下)

Maven学习笔记之--坐标和依赖(下) 1.    最佳实践 归纳Maven依赖使用的常用技巧.方便用来避免和处理很多常见问题. 1.1.     排除依赖 传递性依赖会给项目隐式地引入很多依赖,这极大地简化了项目依赖的管理.但是有些时候这种特性也会带来问题.例如,当前项目有一个第三方依赖,而这个第三方依赖由于某些原因依赖了另外一个类库的SNAPSHOT版本,那么这个SNAPSHOT就会成为当前项目的传递性依赖,而SNAPSHOT的不稳定性会直接影响到当前的项目.这时候需要排除掉该SNAPSH

Java基础笔记 – Annotation注解的介绍和使用 自定义注解

Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 |  被围观 25,969 views+ 1.Annotation的工作原理:2.@Override注解:3.@Deprecated注解:4.@SuppressWarnings注解:5.自定义注解:5.1.添加变量:5.2.添加默认值:5.3.多变量使用枚举:5.4.数组变量:6.设置注解的作用范围:6.1.在自定义注解中的使用例子:7.使用反射读取R

MySQL实用基础笔记

/* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限验证登录MySQL */ mysqld --skip-grant-tables -- 修改root密码 密码加密函数password() update mysql.user set password=password('root'); SHOW PROCESSLIST -- 显示哪些线程正在运行 SHOW VARIABLES --

java String 类 基础笔记

字符串是一个特殊的对象. 字符串一旦初始化就不可以被改变. String s = "abc";//存放于字符串常量池,产生1个对象 String s1=new String("abc");//堆内存中new创建了一个String对象,产生2个对象 String类中的equals比较字符串中的内容. 常用方法: 一:获取 1.获取字符串中字符的个数(长度):length();方法. 2.根据位置获取字符:charAt(int index); 3.根据字符获取在字符串中

Maven学习笔记之——仓库(中)

Maven学习笔记之--仓库(中) 1.    远程仓库的配置 当出现默认的中央仓库无法满足我们的需求或者连接不上的时候.我们可以通过POM文件来指定远程仓库. <repositories> <repository> <id>jboss-maven2-release-repository</id> <name>JBoss Repository</name> <url>http://repository.jboss.org/

网络基础笔记——OSI七层模型

OSI七层模型 由于整个网络连接的过程相当复杂,包括硬件.软件数据封包与应用程序的互相链接等等.如果想要写一支将联网全部功能都串连在一块的程序,那么当某个小环节出现问题时,整只程序都需要改写.所以我们将整个网络分成数层,每层都有自己独立的功能,而且每层的代码都可以独立撰写,因为相互之间不会干扰.如此一来,当某个小环节出现问题时,只要将该层的代码改写即可.并且这样可以让整个网络层次更加的清晰. 在网络上传输信息就像是一个发包裹的过程,从己方的应用程序开始往第七层的包裹里塞数据,再依次塞到第一层的包

[Java基础笔记]数组

Java基础笔记 定义数组: int[] numbers = new int[100]; //方法一 double[] num = new double[10]; int[][] a = new int[2][5]; 通过new创建的数组,元素默认值为0(0.0) int[] scores = {5,4,33,12,46}; //方法二 int[][] a = { //位数不足,自动补0 {5,3,2,1,6}, {10,12,14,15}, }; 数组特性:存储的都是同类型数据:长度定义后不可