Loading

Maven基础

Maven可以解决的问题:

/*
(1)jar包不统一,jar不兼容
(2)工程升级维护过程操作繁琐
*/

Maven是什么:

/*
    Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)

    Maven是用Java语言编写的。他管理的东西统统以面向对象的形式进行设计,最终他把一个项目看成一个对象,而这个对象叫做POM(project  object model),即项目对象模型

我们说一个项目就是一个对象,作为对象的行为、对象的属性都有哪些呢?

Maven说我们需要编写一个pom.xml文件,Maven通过加载这个配置文件就可以知道我们项目的相关信息了!到这里我们知道了Maven离不开一个叫pom.xml的文件。因为这个文件代表就一个项目。

>提个问题大家思考,如果我们做8个项目,对应的是1个文件,还是8个文件?肯定是8个!

那Maven是如何帮我们进行项目资源管理的呢?这就需要用到Maven中的第二个东西:依赖管理。这也是它的第二个核心!

    所谓依赖管理就是maven对项目所有依赖资源的一种管理,它和项目之间是一种双向关系,即当我们做项目的时候maven的依赖管理可以帮助你去管理你所需要的其他资源,
   当其他的项目需要依赖我们项目的时候,maven也会把我们的项目当作一种资源去进行管理,这就是一种双向关系。 那maven的依赖管理它管理的这些资源存在哪儿呢? 主要有三个位置:本地仓库,私服,中央仓库 本地仓库顾名思义就是存储在本地的一种资源仓库,如果本地仓库中没有相关资源,可以去私服上获取,私服也是一个资源仓库,只不过不在本地,
  是一种远程仓库,如果私服上也没有相关资源,可以去中央仓库去获取,中央仓库也是一种远程仓库。   Maven除了帮我们管理项目资源之外还能帮助我们对项目进行构建,管理项目的整个生命周期,当然它的这些功能需要使用一些相关的插件来完成,
  当然整个生命周期过程中插件是需要配合使用的,单独一个无法完成完整的生命周期。
*/

Maven的作用:

/*
Maven的作用我们可以分成三类:

(1)项目构建:提供标准的,跨平台的自动化构建项目的方式

(2)依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突等问题

(3)统一开发结构:提供标准的,统一的项目开发结构,如下图所示:
*/

/*
各目录存放资源类型说明:

src/main/java:项目java源码

src/main/resources:项目的相关配置文件(比如mybatis配置,xml映射配置,自定义配置文件等)

src/main/webapp:web资源(比如html,css,js等)

src/test/java:测试代码

src/test/resources:测试相关配置文件

src/pom.xml:项目pom文件
*/

Maven环境搭建

/*
maven的官网:http://maven.apache.org/
官方下载地址:http://maven.apache.org/download.cgi

安装:
maven是一个绿色软件,解压即安装,非常容易,将里面的`apache-maven-3.6.1-bin.zip`直接解压到D盘根目录下即可
解压完成后我们可以查看一下maven自己的一个目录结构如下:
*/

环境配置

/*
maven的运行需要java的环境,需要我们配置`JAVA_HOME`环境变量,这个相信大家已经存在了

下面在去配置`MAVEN_HOME`的环境变量:
    在系统变量中新建,变量名MAVEN_HOME,变量值,maven文件夹路径,我的路径是D:\Develop\apache-maven-3.2.3,最好不要有中文。

    配置path,找到path系统变量,点开,新建,输入%MAVEN_HOME%\bin

    环境变量配置好之后需要测试环境配置结果,我们需要在DOS命令窗口下输入以下命令查看输出:
mvn-v
*/

仓库:

/*
仓库:
    用于存储资源,主要是各种jar包

关于仓库,我们前面讲到了有三种:本地仓库,私服,中央仓库,其中私服和中央仓库都属于远程仓库.
    中央仓库:maven团队自身维护的仓库,属于开源的
    私服:各公司/部门等小范围内存储资源的仓库,私服也可以从中央仓库获取资源
    本地仓库:开发者自己电脑上存储资源的仓库,也可从远程仓库获取资源

私服的作用:
(1)保存具有版权的资源,包含购买或自主研发的jar
(2)一定范围内共享资源,能做到仅对内不对外开放
*/

坐标和仓库配置:

/*我们说maven的仓库里存储了各种各样的资源(jar包),那这些资源我们如何找到它们呢?我们需要知道它们具体的一个位置才能知道如何找到它们,这个就叫坐标.

坐标:maven中的坐标用于描述仓库中资源的位置
https://repo1.maven.org/maven2/

maven坐标的主要组成如下:
    groupId:定义当前资源隶属组织名称(通常是域名反写,如:org.mybatis;com.itheima)
    artifactId:定义当前资源的名称(通常是项目或模块名称,如:crm,sms)
    version:定义当前资源的版本号

packaging:定义资源的打包方式,取值一般有如下三种:
    (1)jar:该资源打成jar包,默认是jar
    (2)war:该资源打成war包
    (3)pom:该资源是一个父资源(表明使用maven分模块管理),打包时只生成一个pom.xml不生成jar或其他包结构

如果要查询maven某一个资源的坐标,我们通常可以去maven的仓库进行查询,<https://mvnrepository.com/>,在该网站中可直接搜索想要的资源,然后就能得到该资源的坐标.

maven坐标的作用:
    使用唯一标识,唯一性定义资源位置,通过该标识可以将资源的识别与下载工作交由机器完成。
*/
/*
开发者要在自己电脑上做开发,首先要做的就是配置本地仓库.

默认情况下maven本地仓库的位置在哪儿呢?
我们可以选择在全局进行配置,在maven的配置文件`conf/settings.xml`中可以找到它的说明
<!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->
也就是在系统盘当前用户目录下的`.m2/repository`,比如我当前的系统用户是`zs`,则默认的本地仓库仓库位置在`C:\Users\zs\.m2\repository`

因为我们平时开发项目所有的资源会比较多,而且各种资源还有好多的版本,资源与资源之间还有相互依赖的这种情况,因此本地仓库保存的内容会非常的多,
它的体积会很大,如果放在C盘下不太合适,因此我们可以自己来指定一个位置作为本地仓库的位置,这个指定同样是需要来修改maven的配置文件`conf/settings.xml` 在我们前面查看这个文件的时候大家会发现它提供了一个标签`<localRepository>/path/to/local/repo</localRepository>`, 这个标签中配置的值就是我们本地仓库的位置,但是这个标签是在注释中的,也就是说目前不起作用,因此我们要将该标签挪出注释,
并修改标签内的值,指定一个新的位置作为本地仓库的位置,例如: <!-- localRepository | The path to the local repository maven will use to store artifacts. | | Default: ${user.home}/.m2/repository <localRepository>/path/to/local/repo</localRepository> --> <localRepository>D:\maven-repository</localRepository> 如果是局部用户配置: 在仓库的同级目录也可以包含一个`settings.xml`配置文件,在里面也可以进行指定 注意:局部用户配置优先与全局配置(遇见相同配置项的时候)
*/

换源

/*另外大家需要注意:
    maven默认连接的远程仓库位置是:(即中央仓库)

此站点并不在国内,因此有时候下载速度非常慢,因此我们可以配置一个国内站点镜像,可用于加速下载资源

我们在`conf/settings.xml`配置文件中找到`<mirrors>`标签,在这组标签下添加镜像的配置,如下:*/

<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>central</mirrorOf>
    <name>Nexus aliyun</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

 

posted @ 2021-07-05 09:24  1640808365  阅读(46)  评论(0编辑  收藏  举报