Maven基础

一、什么是Maven

Maven 的正确发音是[ˈmevən],而不是“马瘟”以及其他什么瘟。Maven 在美国是一个口语化的词语,代表专家、内行的意思。一个对 Maven 比较正式的定义是这么说的:Maven 是一个项目管理工具,它包含了一个项目对象模型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。

二、Maven的作用

能帮你构建工程,管理 jar包,编译代码,还能帮你自动运行单元测试,打包,生成报表,甚至能帮你部署项目,生成 Web 站点。

三、Maven的使用

3.1、Maven的下载

我们首先要到官网去下载它的安装软件。通过百度搜索“Maven“如下:

点击 Download 链接,就可以直接进入到 Maven 软件的下载页面:

可以选择下载最新版。

3.2、Maven的安装

Maven 下载后,将 Maven 解压到一个没有中文没有空格的路径下,比如 D盘下面。
解压后目录结构如下:

  • bin:存放了 maven 的命令,比如我们前面用到的 mvn tomcat:run
  • boot:存放了一些 maven 本身的引导程序,如类加载器等
  • conf:存放了 maven 的一些配置文件,如 setting.xml 文件
  • lib:存放了 maven 本身运行所需的一些 jar 包

至此我们的 maven 软件就可以使用了,前提是你的电脑上之前已经安装并配置好了 JDK。

3.3、Maven的环境变量配置

配置 MAVEN_HOME ,变量值就是你的 maven 安装 的路径(bin 目录之前一级目录)

配置完成后在path中添加如图:

通过 mvn -v命令检查 maven 是否安装成功,找开 cmd 命令,输入 mvn –v命令,如下图

我们发现 maven 的版本,及 jdk 的版本符合要求,这样我们的 maven 软件安装就成功了。

四、Maven仓库

4.1、Maven仓库的分类

Maven的工作需要从仓库下载一些 jar,本地仓库都会通过 maven软件从远程仓库(可以理解为互联网上的仓库)下载 jar 包并存在本地仓库,本地仓库 就是本地文件夹,当第二次需要此 jar 包时则不再从远程仓库下载,因为本地仓库已经存在了,可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了。

  • 本地仓库 :用来存储从远程仓库或中央仓库下载的插件和 jar 包,项目使用一些插件或 jar 包,优先从本地仓库查找默认本地仓库位置在 ${user.dir}/.m2/repository,${user.dir}表示 windows 用户目录。

  • 远程仓库:如果本地需要插件或者 jar 包,本地仓库没有,默认去远程仓库下载。远程仓库可以在互联网内也可以在局域网内。

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

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

    中央仓库的关键概念:

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

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

4.2、Maven本地仓库的配置

先在E盘创建名为jar文件夹,在此文件夹中创建名为maven_repository文件夹,把它作为本地仓库。
maven的安装目录下找到conf文件夹,里面的settings.xml文件中配置本地仓库的位置


打开settings.xml文件配置如下:

4.3、Maven仓库的访问顺序

先在maven的查询顺序为:
首先在本地资源库中查找依赖,若不存在,则进入下一步,否则,退出;
然后在 远程仓库(私服) 中查找依赖,若不存在,则进入下一步,否则,退出;
最后在 中央仓库 中查找依赖,若不存在,则提示错误信息,退出。

三个仓库:
本地仓库:本地的一个文件夹,用来存放所有的jar包,由自己维护;
远程仓库(或私服):由公司或单位创建的一个仓库,由公司维护;
中央仓库:互联网上的仓库,由Maven团队维护

五、pom元素基本配置

5.1坐标定义

在 pom.xml 中定义坐标,内容包括:groupId、artifactId、version,详细内容如下

<!--项目名称,定义为组织名+项目名,类似包名-->
<groupId>org.example</groupId>
<!-- 模块名称 -->
<artifactId>maven-first</artifactId>
<!-- 当前项目版本号,snapshot 为快照版本即非正式版本,release 为正式发布版本 -->
<version>0.0.1-SNAPSHOT</version>
<packaging > :打包类型
		jar:执行 package 会打成 jar 包
		war:执行 package 会打成 war 包
		om :用于 maven 工程的继承,通常父工程设置为 pom

5.2 pom元素

<project> :文件的根节点 .
<modelversion>:pom.xml 使用的对象模型版本
<groupId > :项目名称,一般写项目的域名
<artifactId > :模块名称,子项目名或模块名称
<version > :产品的版本号 . 
<packaging > :打包类型,一般有 jar、war、pom 等
<name > :项目的显示名,常用于 Maven 生成的文档。 
<description > :项目描述,常用于 Maven 生成的文档
<dependencies> :项目依赖构件配置,配置项目依赖构件的坐标
<build> :项目构建配置,配置编译、运行插件等。
<properties>:自定义的Maven属性
<repositories>:项目的仓库配置
<inceptionYear>:项目的创始年份
<url>:项目的URL地址
<developers>:项目的开发者信息
<contributors>:项目的贡献者信息
<distributionManagement>:项目的部署配置
<issueManagement>:项目的缺陷跟踪系统信息
<ciManagement>:项目的持续集成系统信息
<malilingLists>:项目的邮件列表信息

版权声明:本文为fm-xp原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/fm-xp/p/13974611.html