简述:maven的概念、安装、使用
前言:maven概念
对于maven,大家应该都不会陌生,没有用过也有听过,那它到底是什么呢?maven其实就是一个项目管理工具,是阿帕奇开源的一个Java项目工具,可以帮助我们更方便的管理和构建项目。
大家都知道,我们在做项目的时候,经常要引入很多jar包,一般项目都有十几二十个jar包,我们都要去网上下载然后导入就很麻烦。更痛苦的是,有时候还有jar包冲突,所以这时候maven就出现了,它完美地解决了这一个问题,这也只是maven的作用之一。
还有我们也都知道,一个项目中对于项目结构的拆分是很清晰的,比如一个web项目就有代码、jsp页面、依赖的jar包等,但这些分层都是我们自己自建包然后分开的,使用maven构建的项目能自动有这种结构拆分,有更加清晰的项目结构。
还有一个作用就是能够一键构建项目,什么意思呢?我们要是不使用maven,现在有一个web项目,我们就需要下载idea、tomcat等才能运行这个项目,现在我们使用maven构建的web项目,我们只需要在电脑中安装了maven即可运行这个web项目了,这是因为maven自身集成了这些我们需要的插件。
最后一个作用就是多工程开发,我们都知道在公司中,一个项目有时候是很大型的项目,一个人不可能在要求时间里完成,所以就需要团队一起开发。使用maven能够拆分模块,将一个模块拆分,给不同人进行开发,实现团队开发。
总结一下maven的作用:
- 清晰的项目结构
- 对于jar包的管理
- 一键构建项目
- 多工程开发,将模块拆分成若干工程,利于团队开发
maven安装
maven安装步骤很简单,这里也就简单描述下,网上有很多教程可以学习。首先当然是去官网下载maven,下面是官网地址:
http://maven.apache.org/download.cgi
首先下载那个有下划线的zip包,这个是Windows系统的,上面那个tar.gz是Linux系统的,下载后将这个zip包解压,这样你就maven下载好了,不过这里有一点要注意:maven的在电脑中的地址要全英文,且不能有空格。
接下来就是来配置环境了,这一点和我们配置JDK有点像,找到我的电脑,右键属性,高级属性设置,然后环境变量,然后新建系统环境变量。
然后新建一个MAVEN_HOME,值就是你刚才解压的maven文件的路径。
然后再找到环境变量PATH,在最下面加上一句:%MAVEN_HOME%\bin
,然后点击确定,这样就配置好了,不过这里也有一个前提:就是你的电脑要提前配好JDK。
接下来你就可以打开小黑窗,检查一下是否maven配置完成,输入mvn -v
,如果出现接下来的东西,便说明安装完成。
maven的使用
maven的jar包仓库管理
上面我们说到过,maven一个很明显的作用就是来管理jar包的,那它是怎么管理的呢?对于一个普通项目,它的项目里面是包含有jar包的,我们一般都放在lib目录下,但对于一个maven项目来说,它的项目里是没有jar包的,它存放的是jar包的地址,当我们需要用到jar包的时候,就回去jar包仓库中找对应的jar包。
所以也有一点我们很容易得出,就是maven项目比普通项目大小要小得多,因为它里面并没有jar包,有的只是jar包的坐标,所以空间开销就少了很多。
maven有三个仓库:本地仓库,远程仓库(私服),中央仓库。那它们都是什么呢?下面讲解一下:
-
本地仓库
本地仓库位于磁盘中,在maven的配置中我们可以找到这个本地仓库在磁盘中的地址,也可以去自行修改本地仓库的地址,我们可以在里面存放一些我们比较常用的jar包,这里就不展开了。本地仓库是最先被访问到的仓库,当我们在maven项目中通过jar包坐标找jar包时,会首先搜索本地仓库是否有这个jar包,没有再去别的仓库中下载。
注意:并不是直接用远程仓库或者中央仓库的jar包,而是把他们下载到本地仓库,用本地仓库里的jar包。
-
中央仓库
其实中央仓库就是一个远程的开源jar包库,里面几乎包括了所有开源的jar包,当我们本地仓库或者远程仓库找不到时,就会去中央仓库里去下载到本地仓库,然后使用,注意这一过程是需要联网的。中央仓库是位于国外的,可能下载速度会有点慢,我们也可以自己配置一下国内的阿里云镜像,这样就比较快,不过jar包就可能不太全,下面是配置方式:
-
远程仓库
一般是公司的,我们可以通过局域网来连接到远程仓库,里面存放了一些jar包。关于这三个仓库,大家注意一下使用顺序即可,上面的图已经很清晰了。
maven项目的结构
maven有一个作用,就是划分了项目结构,使结构拆分更明显,那它是怎么划分的呢?maven把项目划分成五个部分(web项目是五个部分,普通项目是四个部分):
- 核心代码部分:
src/main/java
- 配置文件部分:
src/main/resources
- 测试代码部分:
src/test/java
- 测试配置文件部分:
src/test/resources
- web页面资源部分:
src/main/webapp
这就是一个maven项目的结构划分。我们最好遵循这个划分约定,当我们使用idea构建一个maven项目时,它会有一些约束在idea上,比如在核心代码部分你就不能构建jsp页面,当然我们也可以手动修改这个划分规则,但最好还是遵循。
上面这个其实只是我们在idea工作空间里看到的结构,即只是src文件里的结构划分,那src之外呢?
src之外还有两个文件,一个是target文件,这个可以删除,我们重新编译了以后它会重新产生,它存放了就是我们编译了src目录后产生的class文件;还有一个就是pom.xml文件,这个就比较重要了,它里面就是存放了我们的jar包坐标和运行环境的配置,后面会有对这个文件的讲解以及如何配置jar包坐标。
maven命令
上面我们也提到了能使用maven一键构造项目,其实就是在小黑窗里运行项目,那它就有一些命令用来运行和操作项目,其实如果我们在idea里集成了maven,在idea里对maven项目进行各种操作,本质上就是idea帮我们运行了这些maven命令而已。
注意:我们在对一个maven项目进行编译后,会产生一个target文件,这个文件里面存放了项目编译产生的class文件和一些打包后产生的jar包和war包,下面的clean命令说的就是这个文件。
- clean:清理,删除掉编译后出现的目录,一般运行前要进行一次clean
- compile:编译,只编译main目录,不编译测试模块中的代码
- test-compile:编译测试模块中的代码,不编译main目录
- test:运行test模块里的代码
- package:打包,如果是普通java项目变成jar包,如果是web项目变成war包
- install:发布这个项目到本地仓库中
- tomcat:run:一键构建项目
上面的这些命令,除了install和tomcat:run这两个之外,其他产生的都是对target文件的操作,clean是删除target文件夹,compile是产生class文件并放在target中,package是将项目打包然后放在target文件夹中。
还有一点也要注意,对于上面的五个命令:compile、test-compile、test、package、install,这些其实是属于一个生命周期里的,什么意思呢?就是如果你运行了test,它会自动运行compile和test-compile,你允许了test-compile,它会自动运行compile。
idea集成maven
idea集成maven很简单,只要在创建的时候选择maven项目即可,我们主要来讲一下实际使用时会遇到的一些问题。
1.模块设定
上面我们已经讲过了,maven项目结构分为五部分,我们创建的maven项目是没有自动帮我们分为五个部分的,需要我们去自己设定一下。
如图,对一个包右键,然后就可以设置它为maven结构的哪一个结构。
2.添加jar包
我们新建一个 web项目时,就需要导入jar包,所以我们就可以在pom.xml文件里配置,那如何配置呢?首先我们需要去到maven的中央仓库里,找到我们想要jar包的的坐标,下面的中央仓库地址:
https://mvnrepository.com/
下面那里就有jar包地址,我们只需要复制到pom.xml文件里即可。