虽然我们一直使用maven,也按照某些搜来的教程配置了maven,但实际上很多人对maven的了解连皮毛都不算。今天我就来和大家学习一下关于maven的基础知识。
一、什么是maven
maven是一个项目管理工具,它包含了一个项目对象模型(POW: Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
二、maven的作用
(1)依赖管理
maven工程中不直接将jar包导入到工程中,而是通过在pom.xml文件中添加所需jar包的坐标,这样就很好的避免了jar直接引入进来,在需要用到jar包的时候,只要查找pom.xml文件,再通过pom.xml文件中的坐标,到一个专门用于“存放jar包的仓库”(maven仓库)中根据坐标从而找到这些jar包,再把这些jar包拿去运行。
(2)一键构建
什么是构建?指的是项目从编译、测试、运行、打包、安装,部署整个过程都交给maven进行管理,这个过程称为构建。一键构建指的是整个构建过程,使用maven一个命令就可以轻松完成整个工作。
三、maven软件科普
(1)maven软件目录
以下分别科普下maven各个目录存的东西和作用。
bin目录:bin目录存放了maven的命令,比如命令:mvn tomcat:run
boot目录:存放了一些maven本身的引导程序,如类加载器等
conf目录:存放了maven的一些配置文件,如setting.xml文件
lib目录:存放maven本身运行所需的一些jar包
(2)maven安装验证
通过mvn -v命令可以检查maven是否安装成功,看到输出maven的版本以及jdk的版本就表示安装成功。
四、maven仓库
(1)本地仓库:用来存储从远程仓库或中央仓库下载的插件和jar包,项目使用一些插件或jar包,优先从本地仓库查找
(2)远程仓库:如果本地需要插件或jar包,本地仓库没有,默认去远程仓库下载。远程仓库可以再互联网内也可以在局域网内。
maven工作时,需要从仓库下载一些jar包,比如本地的项目A、项目B等都会通过maven软件从远程仓库下载jar包并存再本地仓库(远程仓库可以理解为互联网上的仓库)。本地仓库就是本地文件夹,当第二次需要此jar包时则不再从远程仓库下载,因为本地仓库已经存在了,可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了。
全局setting与用户setting maven仓库地址、私服等配置信息需要在setting.xml文件中配置,分为全局配置和用户配置。在maven安装目录下的有conf/setting.xml文件,此setting.xml文件用于maven的所有project项目,它作为maven的全局配置。如需要个性配置,则需要在用户配置中设置、用户配置的setting.xml文件默认在位置在:${user.dir}/.m2/settings.xml目录中,${user.dir}指windows中的用户目录。maven会先找用户配置,如果先找到则以用户配置为念为准,否则使用全局配置文件。
五、maven工程的认识
(1)maven工程的目录结构
作为一个maven工程,它的src目录和pom.xml是必备的。进入src目录后,我们发现它里面的目录结构如下:
src/main/java: 存放项目的.java文件
src/main/resources:存放项目资源文件,如spring,hibernate配置文件
src/test/java:存放所有单元测试.java文件,如JUnit测试类
src/test/resources:测试资源文件
target:项目输出位置,编译后的class文件会输出到此目录
pom.xml:maven项目核心配置文件