一、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的原理和使用的更多相关文章

  1. maven 工作原理和添加jar包技巧

        相 信只要做过 Java 开发的童鞋们,对 Ant 想必都不陌生,我们往往使用 Ant 来构建项目,尤其是涉及到特别繁杂的工作量,一个 build.xml 能够完成编译.测试.打包.部署等很多 ...

  2. Maven 核心原理

    Maven 核心原理 标签 : Java基础 Maven 是每一位Java工程师每天都会接触的工具, 但据我所知其实很多人对Maven理解的并不深, 只把它当做一个依赖管理工具(下载依赖.打包), M ...

  3. Maven - 工作原理

    章节 Maven – 简介 Maven – 工作原理 Maven – Repository(存储库) Maven – pom.xml 文件 Maven – 依赖管理 Maven – 构建生命周期.阶段 ...

  4. 分享知识-快乐自己:Maven 相关原理

    依赖原则:解决模块工程之间的Jar冲突问题 1):情定设定:验证路径最短者优先原则 创建三个工程如下: Hello:并且以来 log4j.1.2.17.jar HelloFriend:依赖了工程 He ...

  5. Maven使用笔记(三)Maven的工作原理

    概述 Maven是一个项目管理工具,他包含了一个项目对象模型,一组标准集合,一个项目生命周期,一个依赖管理系统和用来运行定义生命周期阶段中插件目标的逻辑. Maven是基于约定优于配置的思想来管理代码 ...

  6. SONATYPE NEXUS搭建MAVEN私服

    1.为什么使用Nexus如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库下载构件无疑加大了仓库的负载和浪费 ...

  7. CentOS安装Nexus(Maven私有库)详细配置及上传本地jar到私服

    Nexus原理 Maven的原理就是将jar从远程中央仓库下载到PC磁盘的本地仓库,当本地仓库没有发现需要的jar就会去Maven默认的远程中央仓库Maven Central(由Apache维护)中寻 ...

  8. 向西项目管理工具Maven一片

    前言 相信仅仅要做过 Java 开发的童鞋们,对 Ant 想必都不陌生,我们往往使用 Ant 来构建项目,尤其是涉及到特别繁杂的工作量.一个 build.xml 可以完毕编译.測试.打包.部署等非常多 ...

  9. Maven - Maven速成

    Maven Maven是一个项目构建和管理工具,有助于开发者快速完成项目的配置,快速建立开发环境,从而提高开发效率. 管理项目构建(build)的生命周期(清理.编译.测试.打包.发布.部署.报告等) ...

随机推荐

  1. 关于and 和or的执行优先级问题分析

    题目:列出本店价低于60或者高于100.并且商品点击数大于628的商品. 按照下面两种写法,得到的结果是不同的. 第一种:结果数据中有点击数为628的记录,显然不符合题目要求. SELECTgoods ...

  2. day8 文件的读取

    只读 只写 追加 读写 功能 username = input('请输入你要注册的用户名:') password = input('请输入你要注册的密码:') with open('list_of_i ...

  3. Manacher(马拉车)算法

    Manacher算法是一个求字符串的最长回文子串一种非常高效的方法,其时间复杂度为O(n).下面分析以下其实行原理及代码: 1.首先对字符串进行预处理 因为回文分为奇回文和偶回文,分类处理比较麻烦,所 ...

  4. 你需要知道的 JavaScript 类(class)的这些知识

    作者: Dmitri Pavlutin译者:前端小智来源:dmitripavlutin 点赞再看,养成习惯 本文 GitHub https://github.com/qq44924588... 上已经 ...

  5. 中山Day5——普及

    今天题目真是贼难呐...才38... 收获:树状数组单个修改 树状数组区间修改 T1:旅行 题意:有n个数,问;从中取任意个数,他们的和为质数的方案数是多少?(n<=50) 暴力模拟即可,这里不 ...

  6. win10安装Oracle11g

    第一步,下载 oracle 下载地址,官网(需要登录注册): http://download.oracle.com/otn/nt/oracle11g/112010/win64_11gR2_databa ...

  7. pip使用镜像的方法

    http://e.pypi.python.org/这个就是官网了,清华大学提供的 建议非清华大学校内的使用这个镜像: http://e.pypi.python.org/simple(这也是一个http ...

  8. 五 Mybatis一对一关联查询的两种方式(基于resultType&基于resultMap)

    关联查询: 一个用户对应多个订单,一个订单只有一个用户 订单关联用户:两种方式 一:基于resultTYpe,一个与表关系一样的pojo实现 主表订单,从表用户 首先要有一个与关联查询表关系一样的po ...

  9. 为Linux环境安装图形化界面

    1.更新软件源并升级系统 yum uppdate&&yum install wqy-microhei-fonts 2.安装GNOME+VNC一键包 wget https://gist. ...

  10. ubuntu16.04 使用tensorflow object detection训练自己的模型

    一.构建自己的数据集 1.格式必须为jpg.jpeg或png. 2.在models/research/object_detection文件夹下创建images文件夹,在images文件夹下创建trai ...