Maven的原理和使用
一、Maven能做什么
1、假设我们有10个项目,都需要引入spring core模块,那么需要十份重复的Spring Core.jar和commons-logging.jar
使用Maven:maven使用本地仓库存储的jar,所有项目都会公用仓库中的同一分jar
2、Spring Core.jar必须同时引入版本兼容的commons-log.jar,否则会报错
使用Maven:maven不需要关心这些问题,会自动引入Spring core.jar所需的兼容版本jar
3、如果一个项目里面有个100个jar,不知道那些jar是彼此关联的,那些是互相排斥的,当需要升级版本时,增加或删除一些jar,很容易出各种问题
使用Maven:maven升级jar,只需要把版本3.x改成4.x,他会自动解决那些问题

概括的说:Maven是一个项目管理和综合工具。Maven简化和标准化项目建设过程。处理编译,分配,文档,团队协作和其他任务的无缝连接。Maven增加可重复性并负责建立相关的业务。
二、Maven的安装和设置
1、安装之前,首先确定你已经安装了JDK
2、下载地址:http://maven.apache.org/download.cgi
3、将安装文件解压到你指定的目录中
4、配置环境变量,变量名M2_HOME,变量值为Maven的安装目录,修改path值,在变量值后面加上bin,例如:%M2_HOME%/bin
5、测试maven环境,执行命令:mvn -v
三、从Maven模板创建一个项目
1、整个项目的项目目录结构会自动创建

2、所有的源代码放在文件夹/src/main/java/,所有的单元测试代码放入:/src/test/java/
3、附加的一个标准的pom.xml被生成,这个Pom文件类似于Ant build.xml文件,它描述了整个项目的信息,一切“从目录结构”,项目的插件,项目依赖,如何构建这个项目等。
4、Maven各个目录的解释说明

5、pom的基本信息

6、pom的依赖关系

7、pom详解
a、添加插件

b、去除依赖

c、继承

d、聚合(通过一个大的项目来整合各个小的模块)

e、指定在Build时需要的资源文件(resource)

四、Maven的生命周期
1、clear:移除上一次构建生成的文件
2、compile:编辑项目的源代码
3、test:使用单元测试框架进行测试,测试代码不会被打包或者部署
4、package:接受编译好的代码,打包成可发布的格式
5、install:将包安装到maven本地仓库,供本地其他maven项目使用
6、deploy:将最终的包发布到远程仓库,供其他开发人员和maven项目使用。
7、site:生成项目的站点文档
五、Maven仓库

在Maven中,任何一个依赖、插件或者项目构建的输出,都可以称之为构建。
Maven在某个统一的位置存储所有项目的共享的构件,这个统一的位置,我们就称之为仓库。
任何一个构件都有其唯一坐标,根据这个坐标可以定义其在仓库中的唯一路径,这就是Maven仓库的布局方式。
如:groupId=org.testing
artfactId=testing
version=5.8
生成路径:org/testing/testing/5.8/testing-5.8-jdk15.jar
六、Maven的依赖
1、依赖的传递性
一个复杂的项目会包含很多依赖,也有可能包含依赖其他构件的依赖。这个是Maven的强大特征之一,它支持了传递性依赖。
依赖原则:路径优先原则,第一声明原则。
解决依赖问题:
通过调整dependency的顺序来解决:那个依赖的顺讯在前面就依赖那个
自己添加一个denpendeny来解决:因为该路径是最小的
通过exclusions元素排除不想要的传递性依赖。
2、Version解释
snapshot版本表示不稳定,处于开发中的版本,即快照版本
release:表示趋于稳定,当前停止更新,可以用于发行的斑斑。
场景:协同开发时,如果A依赖B,由于B频繁更新,B应该使用SNAPSHOT来标识自己。
3、依赖范围Scope
compile(默认):编译范围的依赖,它在编译和打包的时候都会把该依赖打包进去
test:测试依赖范围,它在编译和打包的时候不会把该依赖打包进去
provided:在编译和测试范围有效,最后生成war包时不会打包进去
rumtime:运行时依赖,编译的时候不依赖
import:导入依赖范围
system:系统依赖范围
Maven的原理和使用的更多相关文章
- maven 工作原理和添加jar包技巧
相 信只要做过 Java 开发的童鞋们,对 Ant 想必都不陌生,我们往往使用 Ant 来构建项目,尤其是涉及到特别繁杂的工作量,一个 build.xml 能够完成编译.测试.打包.部署等很多 ...
- Maven 核心原理
Maven 核心原理 标签 : Java基础 Maven 是每一位Java工程师每天都会接触的工具, 但据我所知其实很多人对Maven理解的并不深, 只把它当做一个依赖管理工具(下载依赖.打包), M ...
- Maven - 工作原理
章节 Maven – 简介 Maven – 工作原理 Maven – Repository(存储库) Maven – pom.xml 文件 Maven – 依赖管理 Maven – 构建生命周期.阶段 ...
- 分享知识-快乐自己:Maven 相关原理
依赖原则:解决模块工程之间的Jar冲突问题 1):情定设定:验证路径最短者优先原则 创建三个工程如下: Hello:并且以来 log4j.1.2.17.jar HelloFriend:依赖了工程 He ...
- Maven使用笔记(三)Maven的工作原理
概述 Maven是一个项目管理工具,他包含了一个项目对象模型,一组标准集合,一个项目生命周期,一个依赖管理系统和用来运行定义生命周期阶段中插件目标的逻辑. Maven是基于约定优于配置的思想来管理代码 ...
- SONATYPE NEXUS搭建MAVEN私服
1.为什么使用Nexus如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库下载构件无疑加大了仓库的负载和浪费 ...
- CentOS安装Nexus(Maven私有库)详细配置及上传本地jar到私服
Nexus原理 Maven的原理就是将jar从远程中央仓库下载到PC磁盘的本地仓库,当本地仓库没有发现需要的jar就会去Maven默认的远程中央仓库Maven Central(由Apache维护)中寻 ...
- 向西项目管理工具Maven一片
前言 相信仅仅要做过 Java 开发的童鞋们,对 Ant 想必都不陌生,我们往往使用 Ant 来构建项目,尤其是涉及到特别繁杂的工作量.一个 build.xml 可以完毕编译.測试.打包.部署等非常多 ...
- Maven - Maven速成
Maven Maven是一个项目构建和管理工具,有助于开发者快速完成项目的配置,快速建立开发环境,从而提高开发效率. 管理项目构建(build)的生命周期(清理.编译.测试.打包.发布.部署.报告等) ...
随机推荐
- Java基础 -1.4
标识符与关键字 对于标识符的组成在Java之中的定义如下:由字母.数字._.$ 组成 其中不能使用Java的保留字(关键字) 其中 $ 一般都有特殊的含义 不建议出现在自己所编写的代码上 关键字 是系 ...
- Vue入口页
Template里面的App就是在这个实例里面注册的App组件 也就是整个过程就是将el所标识的元素替换成<App/> 而App就是在此实例注册的App组件.
- 爬虫实战_爬取豆瓣图书利用csv库存储
读取csv文件 通过csv.reader()和DictReader()两个函数 reader()函数返回一个迭代器 会包含表头 通过next函数可以跳过,但是它只能通过下标访问数据: DictRead ...
- Java编程打开运行exe程序
String path = "notepad.exe"; //(C:\Program Files\Tencent\QQ\Bin\qq.exe) try { Runtime runt ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 辅助类:"text-warning" 类的文本样式
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Oracle 提取数据表信息
参考: https://www.progress.com/blogs/jdbc-tutorial-extracting-database-metadata-via-jdbc-driver http:/ ...
- topthink/think-swoole 扩展包的使用 之 WebSocket
嗯~ o(* ̄▽ ̄*)o,没错欢迎收看继续爬坑系列233...话不多说直接开撸 今天的题材是websocket,没有特殊说明的话默认环境都和此系列第一篇文章中申明一致,此后不再赘述. websocke ...
- Broadcast机制(二)
内容提纲: 在本节课当中,我会继续为大家讲解Android的广播机制,重点内容有以下的两个方面: a) 在应用程序当中注册BroadcastReceiver的方法 b) ...
- jdbc学习一半的代码
用java连接MySQL的准备工作 1.下载MySQL(了解MySQL的基本语法) 2.下载java的和MySQL的连接 3.在程序中加入2中下载的jar包 写java程序连接数据库的基本步骤: 1. ...
- jdk环境变量、maven环境变量、Mysql环境变量配置
jdk官网地址:http://www.oracle.com/index.htmlhttp://www.java.sun.com 一.配置 jdk环境变量1.新建JAVA_HOME,在变量值复制JDK安 ...