Maven全面的基础知识学习

1. maven的依赖管理

  • maven的依赖管理,就是管理jar包的过程
  • 在没有使用Maven时,每个项目的jar包都需要粘贴到lib目录下,可能有几十个,几百个,导致项目工程文件庞大。试想如果我们只需要保存核心代码部分,项目工程文件就会大大减小,maven的依赖管理就可以解决这个问题。
  • maven 工程中不直接将 jar 包导入到工程中,而是通过在 pom.xml 文件中添加所需 jar 包的坐标,这样就很好的避免了 jar 直接引入进来,在需要用到 jar 包的时候,只要查找 pom.xml 文 件,再通过 pom.xml 文件中的坐标,到一个专门用于”存放 jar 包的仓库”(maven 仓库)中根据坐标从 而找到这些 jar 包,再把这些 jar 包拿去运行。
    1.1 jar包的坐标由什么组成?
    • Maven坐标为各种构件引入了秩序,任何一个构件都必须明确定义自己的坐标,而一组Maven坐标是通过一些元素定义的,他们是groupId、artifactId、version、packaging、classifier。先看一组坐标定义,如下:
	
			<groupId>org.sonatype.nexus</groupId>
			<artifactId>nexus-indexer</artifactId>
			<version>2.0.0</version>
			<packaging>jar</packaging>
	groupId:该元素定义了当前Maven项目隶属的实际项目,一般情况下该项元素都与公司域名相对应,比如com.taobao.
	
	artifactId:该元素定义了实际项目中的一个Maven Module
	
	version:该元素表示当前构件的版本,包括稳定(release)版本和测试(snapshot)版本
	
	packaging:该元素定义Maven项目的打包方式,默认为jar,还有war和pom方式
  • GroupId和ArtifactId被统称为“坐标”是为了保证项目唯一性而提出的,如果你要把你项目弄到maven本地仓库去,你想要找到你的项目就必须根据这两个id去查找。

  • GroupId一般分为多个段,这里我只说两段,第一段为域,第二段为公司名称。域又分为org、com、cn等等许多,其中org为非营利组织,com为商业组织。举个apache公司的tomcat项目例子:这个项目的GroupId是org.apache,它的域是org(因为tomcat是非营利项目),公司名称是apache,ArtifactId是tomcat。

  • 比如我创建一个项目,我一般会将GroupId设置为cn.pzh,cn表示域为中国,pzh是我个人姓名缩写,ArtifactId设置为testProj,表示你这个项目的名称是testProj,如果是web项目 packaging需要选择war包来打包

2、maven 仓库和仓库的类型有哪些?

  • maven 的工作需要从仓库下载一些 jar 包,如下图所示,本地的项目 A、项目 B 等都会通过 maven
    软件从远程仓库(可以理解为互联网上的仓库)下载 jar 包并存在本地仓库,本地仓库 就是本地文 件夹,当第二次需要此 jar
    包时则不再从远程仓库下载,因为本地仓库已经存在了,可以将本地仓库 理解为缓存,有了本地仓库就不用每次从远程仓库下载了。
    下图描述了 maven 中仓库的类型:

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

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

  • 中央仓库 :在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包 含了世界上大部分流行的开源项目构件在这里插入图片描述

3. 怎么修改本地仓库的路径?

<!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  
  -->
<localRepository>D:\Download\maven_repository</localRepository>

在maven的config目录中,setting.xml中把Default注释,写上本地仓库的路径即可<localRepository>D:\Download\maven_repository</localRepository>

比如说我的本地仓库在 D:\Download\maven_repository

4. 全局 setting 与用户 setting

  • maven 仓库地址、私服等配置信息需要在 setting.xml 文件中配置,分为全局配置和用户配置。 在 maven 安装目录下的有 conf/setting.xml 文件,此 setting.xml 文件用于 maven 的所有 project 项目,它作为 maven 的全局配置。 如需要个性配置则需要在用户配置中设置,用户配置的 setting.xml 文件默认的位置在: u s e r . d i r / . m 2 / s e t t i n g s . x m l 目 录 中 , {user.dir} /.m2/settings.xml 目录中, user.dir/.m2/settings.xml,{user.dir} 指windows 中的用户目录。 maven会先找用户配置,如果找到则以用户配置文件为准,否则使用全局配置文件。

5. maven的基本命令

  • mvn clear
    • clean 是 maven 工程的清理命令,执行 clean 会删除 target 目录及内容。
  • mvn compile
    • maven 工程的编译命令,作用是将 src/main/java 下的文件编译为 class 文件输出到 target 目录下。
  • mvn test
    • test 是 maven 工程的测试命令 mvn test,会执行src/test/java下的单元测试类。
  • mvn package
    • package 是 maven 工程的打包命令,对于 java 工程执行 package 打成 jar 包,对于web 工程打成war 包。
  • mvn install
    • install 是 maven 工程的安装命令,执行 install 将 maven 打成 jar 包或 war 包发布到本地仓库

    deploy > install > package > test > complie

    当前面的命令执行后,后面的命令也会随之执行

    在这里插入图片描述

6. maven的概念模型

  • maven包含了一个项目对象模型(project object model),一组标准集合,一个项目生命周期(project lifecycle),一个依赖管理系统(dependency management system)和用来运行定义在生命周期阶段中插件目标逻辑。
  • 项目对象模型 pom.xml
    • 一个maven工程都有一个pom.xml文件,通过pom.xml文件定义项目的坐标,项目依赖,项目的信息,插件信息等。

在这里插入图片描述

  • 依赖管理模型
    在这里插入图片描述
  • 通过项目对象模型确定了项目的信息,通过依赖管理模型确定的项目依赖的插件及JAR包,如下图所示在这里插入图片描述
    总结,maven具有依赖管理和一键构建的功能,优点有
    ①防止jar包冲入
    ②简化了项目从编译、测试、运行、打包、安装 ,部署的流程
    好啦,这就是我对maven基础知识的梳理。如有错误,还望指正!!!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值