初识maven 项目管理工具快速理解入门

文章目录

    • 什么是maven
    • maven仓库
    • maven项目标准目录结构
    • maven生命周期
    • maven概念模型
    • maven的安装及简单使用
    • IDEA下的maven
    • IDEA中maven工程的创建

什么是maven

maven是什么,翻译为专家,一个项目管理工具。
maven能解决什么问题:
jar包多了,手动引入工程目录,jar包冲突,版本冲突,手动解决很麻烦,maven可以帮我们管理。
maven和Idea很像。
单元测试得一个个来测试,maven可以把指定目录下的所有单元测试全部测试完,并告诉你结果。
代码完成之后,如果是Idea的话需要手动打包,才能卖出去,而maven则一键就可以。

maven第一个核心的功能就是依赖管理,也就对jar包的管理。
在传统的web工程中,jar包都是放在项目中的,也就是每个项目中都要放置其所需要的jar包,而这样的话,在一个服务器上,如果有不同的web项目用了相同的jar包,它们也得分别包含该jar才行,显然,这种方式会浪费很多的存储空间。(而且想想之前写的小的web项目,每次都要导入jdbc的jar包,jedis的jar包,其实很麻烦,就是很麻烦)
对于maven,它不将jar包放置在项目中,而是将所有项目用到的所有jar包都放置在jar包仓库中,而项目里只记录所需jar包的索引(或者说是坐标),从而将项目和jar包之间的羁绊解放,提高项目们之间的耦合程度,从而降低存储资源的占用,使得maven项目所占空间大大减小,且便于维护。

maven仓库

前面提到maven的功能依赖管理,将jar包放在仓库里。maven的体系中不止一个仓库,这里讲一下maven的仓库。
初识maven 项目管理工具快速理解入门_第1张图片
(图片来源培训班视频)
普通的maven项目中会有jar包的索引(坐标),其指向本地仓库,而本地仓库指向中央仓库和远程仓库,中央仓库是需要联网的。
这个中央仓库你可以认为是maven官方提供的一个几乎所有的开源jar包的仓库,它是由sonatype公司来维护的,每隔一段时间就会更新。每周会有超过25w开发者的7kw的访问量,可以说,你所需要的jar包这里有,你不需要的jar包这里也有。
当然,当你不能联网时,或者网络带宽吃紧时,是不适合通过中央仓库来获取jar包的,有时你自己写的jar包也不是十分适合放到中央仓库去,放上去也比较麻烦。这时,你需要在自己公司弄一个远程仓库,将自己写的常用的jar包放在这里,或者将常用的jar包在闲暇时间下载到这里,之后就存储在远程仓库,就算断网,你也能正常从远程仓库下载jar包到本地仓库。
本地仓库的概念就很好理解了(默认是系统盘),这里就不做过多的解释。当然,本地仓库可能有多个,这也是可能的。本地仓库更多的是作为maven项目和远程仓库或中央仓库之间的一个缓冲。它其中不必有所有的jar包,只需要当前一些maven项目所需的jar包即可,而远程仓库中则要放很多的jar包,中央仓库更是,需要有几乎所有的jar包。(这里和之前博客中提到拿redis作为web项目和mysql数据库的中间缓冲区很类似,redis中只放一些十分常用查询且经常不变化的数据)
按照示意图,在开启maven项目中,会先从本地仓库找所需jar包,如果没有,会查找远程仓库,如果也没有,那么可以从中央仓库查找下载,也可以从别的本地仓库上传。

maven项目标准目录结构

src/main/java,核心代码部分
src/main/resources,配置文件部分
src/test/java,测试代码部分
src/test/resources,测试配置文件
src/main/webapp,页面资源,js,css,图片等等

maven生命周期

maven主要有三套生命周期,其中使用最多的是默认生命周期,其主要包含:编译(compile),测试(test),打包(package),安装(install)和发布(deploy)五个阶段,执行到每个阶段都代表着之前的阶段已经完成,例如,执行打包操作,会将之前的编译,测试都完成。执行发布操作,会将之前的四个阶段都给执行完毕。
除了默认生命周期,还有清理生命周期,在该周期,使用clean命令,可以清除之前的项目编译信息。
除此之外,还有站点生命周期。

maven概念模型

初识maven 项目管理工具快速理解入门_第2张图片
关于maven概念模型,这里我也不是特别清楚,所能够接触到的资料不是很多,之后可能会进行补充。
其中pom.xml中存储的是项目自身信息、项目运行所依赖的jar包信息以及项目运行环境信息(例如jdk和tomcat信息等)还有插件信息等。
除此之外,maven使用依赖管理模型来管理依赖的jar包。其中存储着项目距所需要的jar包的坐标。其坐标示意如下:

<dependency>
   <!--组织-->
   <groupid>num2</groupid>
   <!--项目名-->
   <artifactid>maven-test</artifactid>
   <!--版本号-->
   <version>2.0</version>
   <!--使用范围-->
   <scope>test</scope>
</dependency>

除此之外,我们之前谈maven还说到maven的一键构建,只要一个命令就可以把编译、测试、打包、安装还有发布都完成,在maven的默认生命周期中,每一个命令(compile,test,package,install,deploy)都对应了maven底层的一个插件。
可以说,maven管理项目生命周期过程是基于插件完成的。
所以总结,对这张maven概念模型的图来说,基本上就是三个重点,项目对象模型,依赖管理模型,还有就是生命周期构建。

maven的安装及简单使用

首先下载的网址是https://maven.apache.org/download.cgi,在files一栏中进行下载,如果下载不顺利,可以更换镜像下载。
下载之后放置于全英文目录下,解压,解压之后目录下有好几个文件夹。
其中:

  • bin目录下存放的是maven的命令,其中mvn是最重要也是最常用的命令,用来构建项目。
  • boot存放的是maven自身运行所需要的类加载器。
  • conf是一些配置文件,其中settings.xml是对maven进行主要配置的配置文件。
  • lib文件夹是maven自身运行的jar包。

然后是来配置环境变量,首先把maven的解压目录给创建环境变量。
初识maven 项目管理工具快速理解入门_第3张图片
然后在path变量上添加:初识maven 项目管理工具快速理解入门_第4张图片
同时,要保证环境变量中已经提前配置好了JAVA_HOME变量:
在这里插入图片描述
如此,便配置好了MAVEN的环境变量。
打开命令行,输入mvn -v来测试一下,如果出现以下回应消息,则是配置成功。
初识maven 项目管理工具快速理解入门_第5张图片

IDEA下的maven

之所以本文没有写maven软件如何安装和使用,因为我是觉得大家还是在IDEA中使用maven中比较多吧,所以这里主要介绍IDEA的maven插件的使用。
首先打开maven目录下conf文件夹中的settings.xml文件,找到如下位置:
初识maven 项目管理工具快速理解入门_第6张图片
这里default为默认本地仓库位置,为了便于寻找和使用,我们自己来指定本地仓库的位置,将localRepository一行复制出来,放在这个注释外面,然后在其中添加自己想要的本地仓库位置。
初识maven 项目管理工具快速理解入门_第7张图片
然后打开IDEA,打开file-settings,搜索maven,进行如下设置,Maven home directory为Maven文件夹路径,User settings file为刚刚我们修改的settings文件路径,然后local repository为本地仓库。
初识maven 项目管理工具快速理解入门_第8张图片
然后左边Maven栏下选择Runner,设置VM Options参数如图所示,保证断网时正常工作。
初识maven 项目管理工具快速理解入门_第9张图片
如此IDEA的maven便配置完成。

IDEA中maven工程的创建

使用骨架创建java工程
初识maven 项目管理工具快速理解入门_第10张图片
如图所示,创建maven的java工程,右边的诸多选项是maven提供的骨架,帮助我们构建项目。
然后就是输入你的maven安装地址,settings.xml的路径,本地仓库地址,groupid,artificialid等。这里就不做演示了。

初识maven 项目管理工具快速理解入门_第11张图片
第一次创建maven项目,需要下载所需要的jar包,这个可能会出现报错:Cannot resolve plugin org.apache.maven.plugins:maven-compiler-plugin:3.1。这是更新jar包失败,可以点击右侧的reimport all maven projects
即可解决。在这里插入图片描述
在src-main-java-你的目录下有个app类文件,运行它的main方法,可以正常打印出hello world就算是创建成功了。初识maven 项目管理工具快速理解入门_第12张图片

你可能感兴趣的:(Java项目随记,maven,java,web)