Maven(一):Maven的简介与安装

文章目录

  • 简介
  • Maven的同类产品
    • Make
    • Ant
  • 其他
  • Maven的安装和配置
    • 安装目录分析
    • 技巧

2022年笔记迁移

简介

什么是Maven?

可以翻译为知识的积累,也可以翻译为“专家”。

Maven是一个极其成功的跨平台的项目管理工具,是Apache的一个顶级开源项目。

所谓的项目管理工具,都有哪些功能?

一大核心用途是帮助我们进行自动化构建,从清理、编译、测试、生成报告,到打包、部署及生成项目文档等一系列流程。

Maven都可以帮我们做好,我们只需要给项目配置好Maven,然后通过一些简单的指令就能完成以上流程。比如说mvn clean install

把这些繁琐的任务交给Maven,极大解放了我们的双手。

另外,Maven是跨平台的,无论在什么平台上,maven的指令都是一样的。

基于以上特点,Maven也可以帮助我们标准化构建过程。大家都使用Maven的规则来构建自己的项目。

另一个核心用途是做依赖管理

依赖就是项目所需要使用的第三方类库,这些类库会通过依赖的方式引入的项目中来。

对于大型项目来讲,引用几十个甚至几百个第三方开源类库是很常见的事。手动管理这样庞大的依赖数量是不可能的,要累死。版本不一致、版本冲突、依赖冲突等等问题,注定了手工解决是不现实的。

于是Maven提供了一个优秀的依赖管理方案。

它通过一个坐标系统来准确定位每一个构件(artifact),就是说通过一组坐标,Maven可以找到任何一个Java类库(如jar文件)。

Maven为全世界的Java开发者提供了一个免费的中央仓库,你可以在里面找到任何的流行类库。通过一些Maven的衍生工具(如Nexus),我们可以对其进行快速的搜索和下载,非常方便。

另外,Maven对于项目目录结构、测试用例命名方式等具有既定的规则,只要遵循了这些成熟的规则,在做项目切换的时候就节省了大量的学习成本,可以说是约定优于配置。

Maven的同类产品

Java领域的项目管理工具,不止是Maven,还有老牌的Make、Ant等。甚至是现成的IDE。

Make

Make是最早的构建工具。

核心是一个Makefile文件,用户在Makefile文件中编写各种构建规则。

Make的学习和使用成本太高了,而且它不跨平台。

Ant

Another Neat Tool,即另一个整洁的工具。

Ant最早是用来构建著名的Tomcat,作者创建它的一大动机就是因为受不了Makefile的语法格式了。

可以将Ant看做是Java版本的Make,因此它是跨平台的。

另外,Ant使用build.xml来定义构建脚本,更加友好。

早期的Ant是没有依赖管理的,后来才可以借助lvy做管理依赖。不过Ant是没有中央仓库的。

其他

看到句很有意思的话:C++之父曾经说过,只有两类计算机语言,一类语言天天被人骂,还有一类没人用。

使用Maven最高效的方式,永远是命令行。IDE在自动化构建方面有天生的缺陷,诸如IntelliJ IDEA等IDE虽然一直在为更好的集成Maven而努力,但是这需要时间。

Maven官方站点的文档写的很乱,非常乱。

Maven的安装和配置

Maven下载地址:https://maven.apache.org/download.html

Maven的版本跟jdk的版本是强对应的,可以去https://maven.apache.org/docs/history.html里看看各版本Maven对应的jdk版本。

Maven 3.3 要求 JDK 1.7 或以上

Maven 3.2 要求 JDK 1.6 或以上

Maven 3.0/3.1 要求 JDK 1.5 或以上

解压后,配置bin目录为环境变量,之后在cmd中输入mvn -v,如果正常返回就说明安装成功。

windows和linux上的安装过程基本一致,都是解压 + 配置环境变量的过程。

关于Maven的升级,这个稍微提一下吧。

在windows中,升级是很简单的,下载新版本Maven,解压后,修改环境变量为新版Maven的bin目录即可。当然,配置文件什么的,需要自己修改。

在linux中,升级也是一样,解压新版本Maven + 配置环境变量,这里稍微有个小技巧,就是你在配置环境变量的时候,可以把一个符号链接配成环境变量,这样之后升级的时候,修改符号链接的指向就可以了。

安装目录分析

Maven解压后出来的目录是这样的:

bin/
boot/
conf/
lib/
license
notice
readme.txt

bin/:包含了mvn运行的脚本;其中mvn跟mvnDebug内容基本一样,区别在于mvnDebug多了一条MAVEN_DEBUG_OPTS配置,其作用是在运行Maven时开启debug。该目录下还包含m2.conf文件,这是classworlds的配置文件。

boot/: 只含有plexus-classworlds.jar文件,是Maven自身的类加载器框架,Maven使用该框架加载自己的类库。但是对于一般的Maven用户来讲,不需要在意这个。

conf/:核心配置文件settings.xml。全局控制Maven的一些配置,比如说中央仓库地址、本地仓库地址等;

lib/:Maven运行时所需的一些类库。

技巧

Maven安装目录下的settings.xml是全局范围的配置文件,整台机器上的所有用户都会直接受到该配置的影响;

用户目录下~/.m2/settings.xml是用户范围的配置文件,只有当前用户才会受到该配置的影响。

一般来讲,是推荐使用用户层级的settings.xml的。

关于生效的优先级:pom.xml > user settings > global settings

在应用配置的时候,会将不同配置文件进行合并,如果有重复配置的话,优先级高的配置会覆盖优先级低的配置。

尽量不要使用IDE自带的Maven,比如说idea一般会在安装目录的plugins\maven\lib\maven3下装一个。

使用和升级都比较麻烦,还是自己安装一个比较好。

你可能感兴趣的:(Java,maven,java)