首页 > 技术文章 > Maven基础

-ape 2022-01-11 09:42 原文

一、    Maven基本概念

  1.      Maven是什么?

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

    Maven的生命周期      清理 -> 编译 -> 测试 -> 报告 -> 打包 -> 部署

*通俗点讲,Maven就是通过pom.xml文件的配置获取jar包,而不用手动去添加jar(管理jar包)

  2.      pom.xml—如何获取一个jar包?

 

 

 

 

 

 

 

 

groudId

团体、组织的标识符包名。团体标识的约定是,它以创建这个项目的组织名称的逆向域名(reverse domain name)开头。一般对应着JAVA的包的结构。例如org.apache

artifactId 

单独项目的唯一标识符项目名。比如我们的tomcat, commons等。不要在artifactId中包含点号(.)。

version 

一个项目的特定版本。

 

***maven在版本管理时候可以使用几个特殊的字符串 SNAPSHOT、LATEST、RELEASE。比如"1.0-SNAPSHOT"。各个部分的含义和处理逻辑如下说明:

SNAPSHOT

这个版本一般用于开发过程中,表示不稳定的版本。

LATEST

指某个特定构件的最新发布,这个发布可能是一个发布版,也可能是一个snapshot版,具体看哪个时间最后。

RELEASE

指最后一个发布版。

 

二、    Maven的安装

  1.      官网下载地址:http://maven.apache.org/download.cgi

  2.       配置环境变量  注意:安装Maven前,必须确认你的机器中已经安装了JDK

1)       解压压缩包

2)       添加环境变量MAVEN_HOME,值为apache-maven-3.3.9的解压路径

 

 

 

 

 

3)       在path环境变量值末尾添加%MAVEN_HOME%\bin

4)       在cmd输入mvn  –version,如果出现maven的版本信息,说明配置成功

 

 

 

 

三、    Maven仓库

我们已经知道,通过pom.xml中的配置,就能够获取到想要的jar包,但是这些jar是在哪里呢?就是我们从哪里获取到的这些jar包?

仓库分为:本地仓库、第三方仓库(私服)、中央仓库

  1.       本地仓库

Maven会将工程中依赖的jar包从远程下载到本机的一个目录下管理,每个电脑默认的仓库是在%user.home/.m2/repository下

 

 

 

 

 

 

我们可以修改本地仓库的位置:

在$MAVEN_HOME/conf/setting.xml文件中修改

 

 

 

  2.       第三方仓库

第三方仓库,又称为内部中心仓库,也称为私服

私服:一般是由公司自己设立的,只为本公司内部共享使用。使用私服为了减少对中央仓库的访问

 

私服可以使用的是局域网,中央仓库必须使用外网。

也就是一般公司都会创建这种第三方仓库,保证项目开发时,项目所需用的jar都从该仓库中拿,每个人的版本就都一样。

 

注意:连接私服,需要单独配置。如果没有配置私服,默认不使用

  3.       中央仓库

Maven内置了远程公用仓库http://repo1.maven.org/maven2

这个公共仓库是由Maven自己维护,里面有大量的常用类库,并包含了世界上大部分流行的开源项目构件。目前是以java为主

 

工程依赖的jar包如果本地仓库没有,默认从中央仓库下载

获取jar包的过程:

 

四、    使用IDEA创建Maven项目

  1.       IDEA中配置Maven

打开Preferences窗口:

 

  2.       创建java项目

    1)       

 

    2)       

     3)      填写GroupId、ArtifactId、版本号

 

     4)       Next

  

    5)       Finish

 

  3.       java项目目录结构

 

 

 

 

 

 

 

 

  4.       创建Java web项目

 

 

 

 

 

 

 

 

 

 

  5.       java web项目目录结构 

 

 

 

 

           

 

 

 

 

 

 

 

 

 

 

 

五、    eclipse中创建MAVEN项目

  1.      eclipse中配置maven

    1)     eclipse的配置中搜索maven

    2)     选中Installations,并添加刚才安装的maven

 

    3)     选择UserSettingsmaven的配置文件设置成上面配置的文件

  2.      使用Maven创建Java项目

    1)     创建java项目,选择other

 

    2)     在打开的窗口中,找到maven文件夹,并选择MavenProject,然后点next

 

    3)     选择workspace,点击next

 

    4)     选择maven-apchetype-quickstart,点击下一步

 

    5)      填写GroupIdAtrifactIdVersion,然后点击finish

 

  3.      JAVA项目目录结构

 

六、    eclipse创建mavenweb项目

    1)     创建java项目,选择other

 

    2)     在打开的窗口中,找到maven文件夹,并选择MavenProject,然后点next

 

    3)     选择workspace,点击next

 

    4)     选中maven-archetype-webapp,点击下一步

 

    5)     填写GroupIdAtrifactIdVersion,然后点击finish

 

  2.      mavenweb项目的路径

 

七、    pom.xml依赖关系

  1.       如何获取坐标

    1)       打开网址:http://mvnrepository.com/

    2)       搜索需要的jar包:

 

    3)       选择版本:

 

    4)       获得坐标:

 

  2.       依赖(坐标)的常见配置

 

 

 

 

 

 

 

groupId、artifactId、version是依赖的基本坐标,缺一不可

scope

依赖范围,意思就是通过pom.xml加载进来的jar包,在什么范围内生效,范围包括编译时、运行时、测试时

 

 

 

 

 

 

  

1)       compile:默认值,如果选择此值,表示编译、测试和运行都使用当前jar

2)       test:表示只在测试时当前jar生效,在别的范围内就不能使用该jar包。例如:junit 。此处不写也不报错,因为默认是compile,compile包扩了测试

3)       provided:表示编译和测试时使用当前jar,运行时不在使用该jar了。例如:servlet-api、jsp-api等。

4)       runtime:表示测试和运行时使用当前jar,编译时不用该jar包。例如:JDBC驱动。

5)       system:表示我们自己手动加入的jar包,不属于maven仓库(本地,第三方等),属于别得类库的这样的jar包,只在编译和测试期生效,运行时无效。一般不用

  3.       依赖调节原则

依赖调节原则就是maven解决传递依赖时jar包冲突问题的方法,有两种原则:

a)       第一原则:路径近者优先原则

A -> B -> C -> D -> X (1.6)

E -> D -> X (2.0)

使用X(2.0),因为其路径近

b)      第二原则:第一声明优先原则,如果路径相同,maven默认配置在前面的优先使用

A -> B -> X (1.6)

C -> D -> X (2.0)

使用X(1.6 ),因为其配置在前面

             

              Maven会先根据第一原则进行选择,第一原则不成,则按第二原则处理

 

推荐阅读