maven的基础介绍,为什么需要使用maven、maven的安装及基本使用方法、maven工程的生命周期及常用指令、IDEA中创建maven工程。
关于maven的基础介绍,为什么需要使用maven、maven的安装及基本使用方法、maven工程的生命周期及常用指令。(IDEA配置)。
文章目录
什么是maven及为什么需要使用maven
- 什么的maven?
Maven是一个项目管理工具,它包含了一个项目对象模型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
简单而言,我们需要使用maven来进行项目结构的管理,可以把maven抽象为一个大环境,我们的程序在此环
境下运行,后面将会介绍maven项目的工程结构。
提示:Maven的正确发音是[ˈmevən],而不是“马瘟”以及其他什么瘟。
- 为什么需要使用maven?
首先,我们平时写程序,需要引入各种jar包,当工程较大时,可能需要几十甚至上百个jar包,而不同的工程直接可能由于jar包的版本不一致而产生冲突;再者,每一个工程都背负着很多jar包,这样导致工程所占空间比例增加,能不能使得不同的模块工程共用一份jar包库?
使用maven的两个经典好处:依赖管理和项目一键构建
依赖管理:maven工程中不直接将jar包导入到工程中,而是通过在pom.xml文件中添加所需jar包的坐标,这样就很好的避免了jar直接引入进来,在需要用到jar包的时候,只要查找pom.xml文件,再通过pom.xml文件中的坐标,到一个专门用于”存放jar包的仓库”(maven仓库)中根据坐标从而找到这些jar包,再把这些jar包拿去运行。
项目一键构建:我们的项目,往往都要经历编译、测试、运行、打包、安装 ,部署等一系列过程。什么是构建?指的是项目从编译、测试、运行、打包、安装 ,部署整个过程都交给maven进行管理,这个过程称为构建。一键构建指的是整个构建过程,使用maven一个命令可以轻松完成整个工作。
也就是说,我们只需要执行maven的一些指令,就能够自动帮我们完成项目的编译运行等操作。
maven的安装
- maven软件下载
- maven软件安装
Maven下载后,将Maven解压到一个没有中文没有空格的路径下,比如D:\software\maven下面。
解压后目录结构如下:
bin:存放了maven的命令,比如我们前面用到的mvn tomcat:run
boot:存放了一些maven本身的引导程序,如类加载器等
conf:存放了maven的一些配置文件,如setting.xml文件
lib:存放了maven本身运行所需的一些jar包
至此我们的maven软件就可以使用了,前提是你的电脑上之前已经安装并配置好了JDK。
- maven及jdk配置
配置 MAVEN_HOME ,变量值就是你的maven安装 的路径(bin目录之前一级目录)
上面配置了我们的Maven软件,注意这个目录就是之前你解压maven的压缩文件包在的的目录,最好不要有中文和空格。
再次检查JDK的安装目录,如下图:
maven安装测试
通过 mvn -v命令检查 maven是否安装成功,看到maven的版本为3.5.2及java版本为1.8即为安装成功。
找开cmd命令,输入mvn –v命令,如下图:
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项目核心配置文件
注意:如果是普通的java项目,那么就没有webapp目录。
maven仓库
前面我们指出,需要对jar包进行统一管理,那么jar包将集中存放与何处呢?
maven的工作需要从仓库下载一些jar包,如下图所示,本地的项目A、项目B等都会通过maven软件从远程仓库(可以理解为互联网上的仓库)下载jar包并存在本地仓库,本地仓库 就是本地文件夹,当第二次需要此jar包时则不再从远程仓库下载,因为本地仓库已经存在了,可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了。
-
本地仓库: 用来存储从远程仓库或中央仓库下载的插件和jar包,项目使用一些插件或jar包,优先从本地仓库查找
默认本地仓库位置在
${user.dir}/.m2/repository,${user.dir}
表示windows用户目录。 -
远程仓库:如果本地需要插件或者jar包,本地仓库没有,默认去远程仓库下载。
远程仓库可以在互联网内也可以在局域网内。
-
中央仓库:在maven软件中内置一个远程仓库地址http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由Maven团队自己维护,里面存储了非常全的jar包,它包含了世界上大部分流行的开源项目构件。
maven本地仓库的配置
在我们安装了maven后,安装了本地maven仓库,我们需要配置maven本地仓库的位置,使得maven能够顺利加载。
在MAVE_HOME/conf/settings.xml文件中配置本地仓库位置(maven的安装目录下):打开setting.xml文件
注意:从Maven中心仓库下载到本地的jar包的默认存放在”${user.home}/.m2/repository”中,在C盘,一般为了节约空间,修改放在其他地方。
- 全局setting与用户setting
maven仓库地址、私服等配置信息都需要在setting.xml文件中配置,分为全局配置和用户配置。
在,maven安装目录下conf/setting.xml文件。此setting.xml文件用于maven的所有project项目,它是作为一个全局配置。
如果需要个性配置则需要在用户配置中设置,用户配置的setting.xml文件默认位置在:${user.dir} /.m2/settings.xml目录中,${user.dir}
指windows 中的用户目录。
maven的常用命令
compile
compile是maven工程的编译命令,作用是将src/main/java下的文件编译为class文件输出到target目录下。
test
test是maven工程的测试命令,mvn test,会执行src/test/java下的单元测试类。
clean
clean是maven工程的清理命令,执行后将删除target目录下的内容。(新一次编译前将上一次编译的结果干掉。)
package
package是maven工程的打包命令,mvn clean package -Dmaven.test.skip=true 跳过本地测试打包
install
install是maven工程的安装命令,执行install将maven打包jar/war包发布到本地仓库。
根据顺序,后面的执行的执行,首先需要执行前面的指令。
maven的生命周期
Clean Lifecycle 在进行真正的构建之前进行一些清理工作。
Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。
Site Lifecycle 生成项目报告,站点,发布站点。
maven的pom文件
maven工程的坐标是在pom.xml中给出的,在pom.xml中定义坐标,内容包括groupId、artifactId、version。
- 项目名称,类似于包名
coderxz.maven
- 模块名称
maven-helloworld
- 当前本标号
0.0.1-SNAPSHOT
- 打包类型
:打包类型
jar:执行package会打成jar包
war:执行package会打成war包
pom :用于maven工程的继承,通常父工程设置为pom
idea中开发maven项目
- 设置maven仓库
在使用maven工具前,我们需要对idea进行配置:
File->Settings配置maven
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gXJ1w5Rw-1589425311615)(…/…/…/themes/smackdown/source/img/image-20200210135514025.png)]
idea中创建maven的web工程
打开idea,选择创建一个新工程
选择idea提供好的maven的web工程模板
点击Next填写项目信息
点击Next,此处不做改动。
点击Next选择项目所在目录
点击Finish后开始创建工程,耐心等待,直到出现如下界面。
手动添加src/main/java目录,如下图右键main文件夹的New Directory
创建一个新的文件夹命名为java
点击OK后,在新的文件夹java上右键àMake Directory asàSources Root