Maven

  • 基于项目对象模型(缩写:POM)概念
  • Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。
  • Maven 是一个基于 Java 的工具,所以要做的第一件事情就是安装 JDK。
  • Maven 提倡使用一个共同的标准目录结构,Maven 使用约定优于配置的原则,大家尽可能的遵守这样的目录结构。如下所示:

    目录 目的
    ${basedir} 存放pom.xml和所有的子目录
    ${basedir}/src/main/java 项目的java源代码
    ${basedir}/src/main/resources 项目的资源,比如说property文件,springmvc.xml
    ${basedir}/src/test/java 项目的测试类,比如说Junit代码
    ${basedir}/src/test/resources 测试用的资源
    ${basedir}/src/main/webapp/WEB-INF web应用文件目录,web项目的信息,比如存放web.xml、本地图片、jsp视图页面
    ${basedir}/target 打包输出目录
    ${basedir}/target/classes 编译输出目录
    ${basedir}/target/test-classes 测试编译输出目录
    Test.java Maven只会自动运行符合该命名规则的测试类
    ~/.m2/repository Maven默认的本地仓库目录位置

POM

  • POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖
  • 执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。

Maven项目构建周期

Maven 构建生命周期定义了一个项目构建跟发布的过程。

一个典型的 Maven 构建(build)生命周期是由以下几个阶段的序列组成的:

阶段 处理 描述
验证 validate 验证项目 验证项目是否正确且所有必须信息是可用的
编译 compile 执行编译 源代码编译在此阶段完成
测试 Test 测试 使用适当的单元测试框架(例如JUnit)运行测试。
包装 package 打包 创建JAR/WAR包如在 pom.xml 中定义提及的包
检查 verify 检查 对集成测试的结果进行检查,以保证质量达标
安装 install 安装 安装打包的项目到本地仓库,以供其他项目使用
部署 deploy 部署 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程

Maven 仓库有三种类型:

  • 本地(local)
  • 中央(central)
  • 远程(remote)

本地

Maven 的本地仓库,在安装 Maven 后并不会创建,它是在第一次执行 maven 命令的时候才被创建。

运行 Maven 的时候,Maven 所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。

默认情况下,不管Linux还是 Windows,每个用户在自己的用户目录下都有一个路径名为 .m2/respository/ 的仓库目录。

Maven 本地仓库默认被创建在 %USER_HOME% 目录下。要修改默认位置,在 %M2_HOME%\conf 目录中的 Maven 的 settings.xml 文件中定义另一个路径。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository>C:/MyLocalRepository</localRepository> </settings>

中央仓库

Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。

中央仓库包含了绝大多数流行的开源Java构件,以及源码、作者信息、SCM、信息、许可证信息等。一般来说,简单的Java项目依赖的构件都可以在这里下载到。

中央仓库的关键概念:

  • 这个仓库由 Maven 社区管理。
  • 不需要配置。
  • 需要通过网络才能访问。

要浏览中央仓库的内容,maven 社区提供了一个 URL:http://search.maven.org/#browse。使用这个仓库,开发人员可以搜索所有可以获取的代码库。


远程仓库

如果 Maven 在中央仓库中也找不到依赖的文件,它会停止构建过程并输出错误信息到控制台。为避免这种情况,Maven 提供了远程仓库的概念,它是开发人员自己定制仓库,包含了所需要的代码库或者其他工程中用到的 jar 文件。

举例说明,使用下面的 pom.xml,Maven 将从远程仓库中下载该 pom.xml 中声明的所依赖的(在中央仓库中获取不到的)文件。

Maven 依赖搜索顺序

当我们执行 Maven 构建命令时,Maven 开始按照以下顺序查找依赖的库:

  • 步骤 1 - 在本地仓库中搜索,如果找不到,执行步骤 2,如果找到了则执行其他操作。
  • 步骤 2 - 在中央仓库中搜索,如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤 4,如果找到了则下载到本地仓库中以备将来引用。
  • 步骤 3 - 如果远程仓库没有被设置,Maven 将简单的停滞处理并抛出错误(无法找到依赖的文件)。
  • 步骤 4 - 在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库以备将来引用,否则 Maven 将停止处理并抛出错误(无法找到依赖的文件)。

菜鸟教程-maven相关推荐

  1. python九九乘法表菜鸟教程_Python

    Python 批量 png 转 ico 一.前言: 首先说一下ico文件的作用:ico是windows的图标文件格式,可以用于浏览器首段图标显示,也可以用于Windows软件.我的话一般用来美化文件夹 ...

  2. python scrapy菜鸟教程_scrapy学习笔记(一)快速入门

    安装Scrapy Scrapy是一个高级的Python爬虫框架,它不仅包含了爬虫的特性,还可以方便的将爬虫数据保存到csv.json等文件中. 首先我们安装Scrapy. pip install sc ...

  3. JS实例学习笔记——w3cschool+菜鸟教程

    基础实例--w3cschool write() document.write("this is a string");//生成普通文本 document.write("& ...

  4. html class 位置,HTML class 属性 | 菜鸟教程

    HTML class 属性 实例 在 HTML 文档中使用 class 属性: 菜鸟教程(runoob.com) h1.intro {color:blue;} p.important {color:g ...

  5. python3菜鸟教程中文-我的python学习方法和资源整理,干货分享

    怎么自学python 现在是真正的干货开始了 我实习的时候,python完全零基础,我看的第一个入门资料是一个视频教程,我觉得非常不错,分享给大家 Python教程_400集Python从入门到精通教 ...

  6. 菜鸟教程python3-Python数据分析,学习路径拆解及资源推荐

    原标题:Python数据分析,学习路径拆解及资源推荐 关于Python数据分析,其实网上能够找到的学习资源很多,主要分为两类: 一类是提供各种资源的推荐,比如书单.教程.以及学习的先后顺序: 另一类是 ...

  7. python菜鸟教程官网绘图-NumPy Matplotlib

    NumPy Matplotlib Matplotlib 是 Python 的绘图库. 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案. 它也可以和图形工具包一起使用,如 P ...

  8. python3菜鸟教程-Python3 循环语句

    Python3 循环语句 本章节将为大家介绍 Python 循环语句的使用. Python 中的循环语句有 for 和 while. Python 循环语句的控制结构图如下所示: while 循环 P ...

  9. python菜鸟基础教程-python基础菜鸟教程,Python的基础语法

    原标题:python基础菜鸟教程,Python的基础语法 什么是Python?Python是一门简单直观的编程语言,并且目前是开源的,可以方便任何人使用. Python的开发哲学:用一种方法,最好是只 ...

  10. python菜鸟教程字典-Python3 字典

    Python3 字典 字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格 ...

最新文章

  1. 解决win7不能上网的问题
  2. python【蓝桥杯vip练习题库】ADV-359分解质因数
  3. JZOJ 5177. 【NOIP2017提高组模拟6.28】TRAVEL
  4. Class.getResource()与Class.getClassLoader().getResource()解析
  5. linux 查看neihe版本_linux查看系统内核版本号
  6. Kettle报错:Entry to update with following key could not be found
  7. php 解析 标记,如何使用PHP-simple-HTML DOM解析器获取标记的属性
  8. JAVA-常量、运算符、类型转换、Scanner
  9. 计算机复试面试题总结
  10. 安装杀毒软件后计算机运行速度慢,我计算机安装杀毒软件后开机启动很慢
  11. python处理rtf文档_python读取word文档的方法
  12. ApacheCN 翻译活动进度公告 2019.6.15
  13. 【深度学习模型】了解一下Faster RCNN
  14. Redis的前前后后左左右右
  15. 京东注册页开发 HTML5 1014
  16. JavaScript百炼成仙 1.20 函数七重关之二 (作用域)
  17. 安卓直播详细教程(三)-----ijkplayer打造个性化控制界面
  18. 数据分析面试、笔试题汇总+解析(二)
  19. IDEA 新手使用手册
  20. 中国新能源汽车行业运作模式与供需形势分析报告2022版

热门文章

  1. html 嵌入编辑excel 开源_网页中嵌入Excel控件
  2. Qt5下载安装及环境变量配置详解
  3. [病毒木马] LSP劫持
  4. 同态滤波 matlab代码,同态滤波处理光照不均匀图像Matlab代码
  5. Python 植物大战僵尸代码实现(2):植物卡片选择和种植
  6. python植物大战僵尸脚本_用 Python 实现植物大战僵尸代码!
  7. 瀑布模型、V模型、原型模型、增量模型、螺旋模型、喷泉模型
  8. 海康威视摄像头+OpenCV+VS2017 图像处理小结(一)
  9. linux arm sbus,嵌入式ARM系列linux2.4配置makefile完全注释(2)
  10. 最新消息2022年广西最新消防设施操作员模拟题库及答案