maven

概念

如今我们构建一个项目需要用到很多第三方的类库,如写一个使用Spring的Web项目就需要引入大量的jar包。一个项目Jar包的数量之多往往让我们瞠目结舌,并且Jar包之间的关系错综复杂,一个Jar包往往又会引用其他Jar包,缺少任何一个Jar包都会导致项目编译失败。

以往开发项目时,程序员往往需要花较多的精力在引用Jar包搭建项目环境上,而这一项工作尤为艰难,少一个Jar包、多一个Jar包往往会报一些让人摸不着头脑的异常。

而Maven就是一款帮助程序员构建项目的工具,我们只需要告诉Maven需要哪些Jar 包,它会帮助我们下载所有的Jar,极大提升开发效率。

maven就是用来管理软件项目的,可以对java项目进行全自动构建,管理项目所需的依赖。

maven曾经是jakarta项目的子项目,现在是Apache软件基金会主持的独立Apache项目。

Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。

优点和缺点

优点

原来的项目中需要的jar包必须手动“复制”、”粘贴” 到WEB-INF/lib 项目下,而借助Maven,可以将jar包仅仅保存在“仓库”中,有需要使用的工程只需要“引用”这个文件,并不需要重复复制到工程中。

原来的项目中所需要的jar包都是提前下载好的,而Maven在联网状态下会自动下载所需要的jar包。首先在本地仓库中找,找不到就在网上进行下载。

出色的依赖项管理,包括自动更新、依赖想关闭(也称为传递依赖项)

开箱即用的庞大且不断增长的伊利阿酷,并与最大的开源项目进行了安排,可以实时提供最新版本

原来的项目一个项目就是一个工程,而借助Maven可以将一个项目拆分成多个工程。能够轻松同时处理多个项目

由于没有限制依赖的数量,如果出现循环依赖的时候会出现问题,这个时候有两种方式处理,一种是通过

build-helper-maven-plugin 插件来规避,另一种就是重构两个相互依赖的项目。

几乎不需要额外的配置就可以立即访问新功能

缺点:

1.由于需要下载,导入等,导致加载缓慢,或者出现错误,和不稳定

2.缺少对Maven的文档描述(网上一大堆,但是没有标准)

3.中央存储库中的元数据不佳

4.POM.xml做为项目元数据的来源

maven 官网

https://maven.apache.org/

依赖搜索

https'//mvnrepository.com/

下载地址

https://archive.apache.org/dis/maven/maven-3/3.3.9/binaries/apache-maven3.3.9-bin.zip

安装

注意 JDK的版本建议为1.8

环境配置

MAVEN_HOME

path

新增 %MAVEN_HOME%\bin

测试

打开cmd win+r cmd

输入 mvn-v 输出正确的版本信息

maven 项目结构

maven-demo(maven项目名称)

pom.xml

src

main

java

resources

test

java

resources

POM文件

POM一个项目的基本信息,用于描述项目如何构建,声明项目依赖等。

项目配置 项目版本 依赖管理 插件管理 版本管理 构建管理

project    工程根标签

modelVersion 4.0 模型版本

parent parent标签类似java中的继承,复用依赖,减少冗余配置

dependencies 依赖组

dependency 依赖

groupId 工程组标志

artifactId 工程的标志 工程名

version 工程的版本号

properties 依赖配置

dependencyManagement 依赖管理

build 使用maven构建的项目可以直接使用maven build完成项目的编译、测试、打包,无需额外配置。

plugins具体的编译和打包工作是通过其中的plugin配置来实现的

plugin

两种仓库

本地仓库 本地的maven仓库

中央仓库 这里用到的是淘宝的映射

坐标

坐标是jar包的唯一标识,maven通过坐标在仓库中找到所需要的jar包

dependency 依赖

groupId 工程组标志

artifactId 工程的标志 工程名

version 工程的版本号

依赖范围

complie test provided 默认为complie

complie 对主程序、测试程序有效,可以进行部署和打包 spring-core

test 只对测试程序有效 junit

provided 不参与打包与部署 servlet-api

依赖可以进行传递和排除

传递就是在最下面引用之前的工程

排除 <exclusion>

依赖原则

依赖就是为了解决工程模块之间jar包冲突的问题

路径最短者优先

验证路径同时时,先声明者优先

maven常用命令

清理项目 mvn clean

编译主程序 mvn cmplie

编译测试程序 mvn test-comoplie

执行测试 mvn test

安装项目 mvn install

部署项目 mvn depoy

查看版本 mvn -v

生产站点 mvn site

依赖管理 mvn dependency:tree

maven 生命周期

清理 clean

编译 complie

测试 test

打包 package

安装 install

发布 deploy

执行时是由上到下顺序执行的

比如 执行 package 会依次执行 clean complie test package

maven自动执行构建过程的哥哥环节的原因

maven的插件机制完全依赖maven的生命周期

MAVEN常用知识点总结相关推荐

  1. maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令

    maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令 在日常的工作中由于各种原因,会出现这样一种情况,某些项目并没有打包至mvnrepository. ...

  2. Maven学习详解(13)——Maven常用命令大全与pom文件讲解

    2019独角兽企业重金招聘Python工程师标准>>> 一.Maven常用命令 1.1.Maven 参数 -D 传入属性参数  -P 使用pom中指定的配置  -e 显示maven运 ...

  3. javaScript常用知识点有哪些

    javaScript常用知识点有哪些 一.总结 一句话总结:int = ~~myVar, // to integer | 是二进制或, x|0 永远等于x:^为异或,同0异1,所以 x^0 还是永远等 ...

  4. Maven常用参数及其说明

    2019独角兽企业重金招聘Python工程师标准>>> Maven常用参数及其说明 -h,--help                              Display he ...

  5. maven 常用插件3

    maven 常用插件3 转载:http://www.cnblogs.com/dennyzhangdd/p/5831112.html 1.根据项目类型打包:jar/war打包插件. 首先看<pac ...

  6. ES6常用知识点概述

    前言 国庆假期已过一半,来篇干货压压惊. ES6,并不是一个新鲜的东西,ES7.ES8已经赶脚了.但是,东西不在于新,而在于总结.每个学前端的人,身边也必定有本阮老师的<ES6标准入门>或 ...

  7. list python 访问 键值对_基础|Python常用知识点汇总(中)

    字符串字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串.1.创建字符串 str1 = 'Hello World!' str2 = "Hello W ...

  8. Maven常用的构建命令

    Maven常用命令: Maven库: http://repo2.maven.org/maven2/ Maven依赖查询: http://mvnrepository.com/ 一,Maven常用命令: ...

  9. matplotlib一些常用知识点的整理,

    本文作为学习过程中对matplotlib一些常用知识点的整理,方便查找. 强烈推荐ipython 无论你工作在什么项目上,IPython都是值得推荐的.利用ipython --pylab,可以进入Py ...

  10. oracle 常用知识点整理

    转 :  oracle 常用知识点 原文链接:http://blog.csdn.net/weijiaxiaobao/article/details/51323573 Oracle 是一个庞大的系统,里 ...

最新文章

  1. 面试官:听说你sql写的挺溜的,你说一说查询sql的执行过程
  2. 数据结构源码笔记(C语言):置换-选择算法
  3. UVA1603Square Destroyer破坏正方形
  4. php 添加透明水印,php加水印的代码(支持半透明透明打水印,支持png透明背景)
  5. iphone查看删除的短信_手机里的短信不小心删除了怎么才能恢复?此文为你解答...
  6. Hacking Diablo II之外挂实战教程:去除D2JSP试用版显示的Trial Version信息
  7. win10安装配置nginx
  8. 常见的一些反爬虫策略(上篇)-Java网络爬虫系统性学习与实战系列(9)
  9. miniprograme-wsx
  10. Shell字符串的替换
  11. fedora 11 配置 thinkpad trackpoint 中键
  12. 股指期货真是个好东西
  13. Google Cloud + Firebase 讲解
  14. 华哥倒酒(二分答案)
  15. 如何离线下载网易云音乐
  16. 用IntelliJ IDEA开发Python
  17. 毕达哥拉斯三元组及本原毕达哥拉斯三元组
  18. Vulkan学习(八): Hello Triangle 重构
  19. 基于stm32的测微仪采集系统开发
  20. Python:天干地支

热门文章

  1. MATLAB矩阵运算部分知识总结
  2. 利用史密斯圆图计算阻抗匹配网络的软件
  3. jdbc sql拼接字符串
  4. 飞思卡尔单片机CAN模块的物理特性的示波器观察
  5. c语言笔试题大题带答案,c语言常见笔试题及答案
  6. keras深度学习之猫狗分类二(数据增强)
  7. 串行通信协议 CAN 和 LIN
  8. mysql学习书籍推荐
  9. JCEF vs JxBrowser
  10. BT601和BT709到底什么关系