Maven基础总结

1. 前言

Maven是一个强大的项目管理工具,公司中Java开发的项目都是由Maven管理的,熟悉掌握Maven工具还是很有必要的,在使用过程中经常遇到不懂的问题,所以利用周末时间系统学习和总结一下,更多的从整体上来认识Maven。

2. Maven核心

Maven两大核心就是依赖管理项目构建

2.1 依赖管理

2.1.1 依赖概念

依赖管理就是对项目中的jar架包的管理。
依赖这个词很好理解,当你还没实现独立时,你依赖你的父母,可以利用父母的资源正常生活。一个高楼大厦项目,要建立一个高楼,需要水泥,需要砖头,需要钢铁,所以一个高楼的构建依赖于这些材料工厂。同样,一个大型的企业级项目往往基于主流的框架,也需要各种工具类,这些资源往往通过打包好的压缩文件提供给项目使用,这个项目要实现复杂的业务需求就要依赖于这些资源,它们就叫依赖包。
当然会有间接依赖的概念,如果你爸爸也是啃老族,你就间接依赖于你的爷爷奶奶0.0。

在项目中使用所需要的架包,需要从网上找到相关的依赖包下载后拷入项目,如果项目过大,所需要的依赖包过多,这些资源管理起来很不方便,大大构建项目的效率。这时候使用Maven来管理这些依赖包就方便多了。

2.1.2 Maven依赖管理实现原理

Maven的依赖管理如何实现让项目使用所需的依赖包呢?
个人理解可以使用互联网资源访问过程进行类比,当我们需要获取一个网站的资源信息,我们在浏览器中输入网站的网址就可以获取,这个网址就是URL(统一资源定位器),这些资源是放在某个Web服务器上。Maven项目如何获取依赖包呢?依赖包是通过坐标信息来唯一标识的,依赖包是存放在仓库中的。
这里就有两个重要概念

  • 坐标信息
<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-context</artifactId>
	    <version>4.3.2.RELEASE</version>
</dependency>

一个依赖包是通过以上三个信息进行定位的,就是说Maven项目可以通过该坐标信息找到依赖包。
groupId:架包的项目名(通常是公司的域名反写)
artifactId:架包的模块名(项目名称)
version:架包的版本号(SNAPSHOT:快照版本,RELEASE正式发行版本)

  • 仓库
    仓库就是存放架包资源的地方,Maven项目可以通过坐标信息从仓库中获取到对应架包。
    可分为本地仓库和远程仓库,远程仓库一般指私服仓库和中央仓库。
    本地仓库:在Maven工具安装时候会有一个默认的仓库地址。本地仓库位于本机磁盘,可以在conf/settings配置文件中的 < localRepository >项中配置本地仓库地址。
    私服仓库:存在于局域网的服务器上,一般是公司自己构建。
    中央仓库:互联网公网地址:http://mvnrepository.com,由Apache公司的Maven团队维护,存放着几乎所有需要用到的开源架包(除了一些有版权冲突的,如Oracle数据库连接架包)
    那么Maven项目现在有一个架包的坐标信息,这里有三种类型的仓库,如何选择呢,这里的查找原则是先从本地仓库中找架包资源,本地仓库没有再从私服仓库中查找,如果私服没有构建,或者私服仓库上没有再从中央仓库中查找。如果还找不到,那项目就报错咯。
    关系如下图:
    这里写图片描述
    私服的安装需要安装Maven仓库管理器–Nexus,使用私服仓库需要在Maven安装目录下的conf/settings配置文件中配置。Nexus配置还是挺讲究的,但是一般进公司开发都早已经搭建好了私服,找同事问个私服地址配置一下即可使用。‘
    Maven项目中所需要的依赖包都存放在本地仓库中,本地仓库没有,就去私服或者中央仓库中找到然后下载到本地仓库中。本地仓库的资源是供本机中的所有Maven项目公用的。通过坐标信息怎么定位本地仓库的资源呢?
    就以该依赖信息为例:
<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-context</artifactId>
	    <version>4.3.2.RELEASE</version>
</dependency>

这里写图片描述
通过Maven这种依赖管理,Maven项目就可以很容易的找到依赖架包,当然,依赖架包的管理远远没有这么简单,后续再学习依赖的继承和依赖冲突的解决。

2.2 项目构建

2.2.1 Maven生命周期

Java对象有生命周期,对象的创建,初始化,消亡等生命周期是由Java虚拟机来管理的。Maven项目也有生命周期,学习Maven项目的构建是很有必要的。
Maven的生命周期用于规划Maven命令的执行流程,再Maven中存在“三套”生命周期,每一套项目独立,互不影响,在每一套生命周期内,执行后面的命令,前面的命令会自动执行。

  • CleanLifeCycle:清理生命周期
    (clean)
  • DefaultLifCycle:默认的生命周期
    (compile,test,package,install,deploy)
  • SiteLifeCycle:站点生命周期
    (site)
    括号中是Maven命令,整个Maven项目的构建和管理就是通过这些命令实现的,学习一下这些命令的使用。
2.2.2 Maven常用命令

拿一个简单Maven项目示范一下命令作用
一个标准的Maven项目目录结构如下:
这里写图片描述
src放项目各种资源,pom指项目对象模型(Project Object Model),pom.xml是Maven的核心配置文件,是Maven项目必不可少的文件,工程的依赖信息就存放于此。
先学习Maven默认的生命周期中的命令的使用

  • compile
    complile是编译命令,作用是将项目中的.java文件编译成.class文件。
    这里写图片描述
  • test
    test作用是执行Maven项目中src/test/java目录下的单元测试类,单元测试类名有要求,格式必须是XxxTest.java。在使用该命令时会自动执行编译的命令。
  • package
    package是一个打包命令,作用是将项目打包成一个资源包,如果是一个Java project,那么打包成jar包,如果是web project,那么打包成war包。jar可以供项目使用,war包可以部署到Web服务器上运行。
    这里写图片描述
    打包命令执行之前会自动执行compile和test命令,这是Maven生命周期的管理。
  • install
    将项目打成架包发布到本地仓库中。
    如果该项目是一个工具包,提供给本地多个项目使用,将该项目发布到本地仓库,其他的项目可以使用坐标信息来引用该项目。
    如果这个工具包需要更改,只需要更改这个工具包内容,不再需要更改引用该工具包的项目。

-deploy是将项目架包发布到远程仓库(不常用)

用一个图表示以上流程:
这里写图片描述
需要注意的是,在默认的生命周期内,执行后面的命令,前面的命令会自动执行。

清理生命周期中的clean命令是一个常用命令,作用是删除项目中的target目录,就是删除项目编译和打包生成的相关文件。

站点生命周期的site命令会生成该项目的HTML文档,这个文档会说明该项目所引用的架包信息和其他信息。这个命令一般不使用。

3. 在eciplse中使用Maven

  1. 安装Maven插件
    现在新版本的JavaEE的eclipse都自带了Maven插件
  2. 配置Maven程序
    不使用内置的版本(3.5.3),选择自己安装的Maven(3.3.9)
    这里写图片描述
  3. 设置user settings:指定本地仓库路径
    这里写图片描述
  4. 构建本地仓库索引
    这里写图片描述
    右击本地仓库,选择Rebuilt Indext

以上四步完成后,就可以在eclipse环境下进行maven项目的开发了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 学习 Maven 需要有一定的 Java 编程基础,对于 Maven 的概念和使用方式也需要有一定的了解。另外,需要了解如何编写和管理项目依赖,以及如何使用 Maven 插件等。如果你之前没有接触过 Maven,建议先了解一些基本的概念和使用方法,例如 Maven 的生命周期、坐标、仓库等。 ### 回答2: 学习Maven需要一些基础知识。首先,需要了解Java编程语言和软件开发的基本概念和原理,以便理解Maven的作用和使用方式。其次,需要熟悉命令行操作以及基本的项目管理和构建知识,这有助于更好地使用Maven进行项目构建和管理。另外,了解项目构建管理工具的基本概念和工作原理也是必要的,这样能更好地理解Maven的工作方式和特点。最后,掌握XML的基本知识也是必要的,因为Maven项目的配置文件pom.xml采用XML格式进行编写和管理。当然,对于初学者来说,这些基础知识可以通过学习和实践逐步掌握,同时也可以通过查阅相关的文档和资料来加深理解。总之,学习Maven需要一些基础知识,但通过积极学习和实践,初学者也能逐步掌握并运用好这个项目构建管理工具。 ### 回答3: 学习Maven并不需要太多的基础知识,但有一些基本的编程和项目管理概念对于理解和使用Maven是很有帮助的。 首先,对Java编程语言有一定的了解是必要的,因为Maven主要用于构建和管理Java项目。了解Java的基础语法、面向对象编程原理以及常用的Java开发工具,能更好地理解和使用Maven。 其次,对于项目管理的基本概念也是必备的。Maven是一个强大的项目管理工具,能够帮助我们自动化构建、测试、打包和部署项目。了解项目的生命周期、依赖管理、版本控制以及发布流程等概念,可以更好地理解和使用Maven的各种功能。 另外,了解一些常用的构建工具和持续集成工具也是有益的。Maven与其他构建工具(如Ant)和持续集成工具(如Jenkins)有很好的兼容性和集成性,对它们有一定的了解可以更好地搭配使用Maven进行项目构建和持续集成。 总结来说,学习Maven需要有一定的Java编程基础、项目管理概念以及对一些相关的构建和持续集成工具的了解,这样才能更好地理解和使用Maven的各种功能,提高项目管理和开发的效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值