目录
1 Maven概述
1.1 Maven的基本概念
1.2 Maven的安装
1.3 Maven仓库种类和彼此关系
1.4 Maven标准目录机构
2 Maven常用命令
3 Maven生命周期
4 Maven概念模型
5 创建Maven工程
5.1 IDEA集成Maven插件
5.2 使用IDEA创建Maven的Java工程
5.3 使用IDEA创建Maven的Web工程
Maven 是一个项目管理工具,它包含了一个项目对象模型 (POM: Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
上述关于Maven的概念看起来晦涩难懂,那么Maven到底能帮助我们做什么呢?
总之,Maven可以把你从一些繁琐工作中解放出来,能帮你构建工程,管理 jar包,编译代码,还能帮你自动运行单元测试,打包,生成报表,甚至能帮你部署项目,生成 Web 站点。
其中,Maven的最经典的作用包括:
1)依赖管理,就是Maven工程对jar包的管理,传统项目中直接将jar包放在项目中,而Maven工程真正的jar包是放在jar包仓库中,项目中存在的是jar包的坐标,当编译时是通过坐标去仓库中寻找jar包的。所以,使用Maven的项目文件大小要比传统的项目文件大小小的多。
2)一键构建,即不再使用本地安装的Tomcat,而是使用Maven集成的Tomcat插件完成,使用Maven的规范化流程如下:
若使用前者,我们需要先把整个项目打包,放在Tomcat目录下的webapp文件夹下,然后在bin目录下找到startup命令双击运行,使用Maven的话就简单的多了,一键完成:cmd命令进入到项目目录下,再mvn tomcat:run 即可。
安装步骤:
解压后的Maven文件目录如下:
仓库种类包括:本地仓库、中心仓库、远程仓库(私服)。
【注意】:一般在本地电脑,我们通常会把本地仓库默认指定的路径(在C盘)修改到其他盘中,避免占用系统盘大量空间且维护方便,修改方法:settings.xml文件中,
一般情况下,我们项目中代码包括几部分:
对于传统项目,针对以上四部分可能会放在不同的包中,但是不同的程序员命名规则就会不一样,所以Maven统一了这个规范:
以一个简单的项目为例说明,进入到项目路径下,打开cmd
1)mvn clean:删除编译文件target,在接收一个已经开发了的项目A时,首先要clean一下,因为每个人的开发环境不同,所以要删除掉原来的编译信息;
2)mvn compile:编译src/main目录下的代码,结果放在target目录下;
3)mvn test:不仅编译src/main下代码,也编译src/test下的代码
4)mvn package:不仅编译src/main下代码,也编译src/test下的代码,且打了war包
5)mvn install:不仅编译src/main下代码,也编译src/test下的代码,且打了war包,此外,把当前项目的jar包存在了本地仓库。
Maven的一键构建是利用其集成的Tomcat插件进行的,构建步骤包括:编译->测试->打包->安装->发布,若接着其他人开发的项目,首先还要进行项目编译信息清除。由上一节讲到的5个命令可知,从前到后执行的范围是逐级包含的,实质上这就是生命周期,Maven有三套生命周期:
1)项目对象模型
对应着项目中的pom.xml文件,包含的信息有三类:
2)依赖管理模型
pom.xml中的项目运行依赖的jar包坐标,包含:
3)构建生命周期
最常用的是默认生命周期:compile、test、package、install、deploy,每一个构建项目的命令对应着maven底层的一个插件。
IDEA集成Maven插件的步骤:
1)首先要保证电脑已经安装好了Maven;
2)在IDEA->Settings->Maven(可直接搜索)设置Maven的安装路径、配置文件路径、本地仓库路径:
3)在IDEA->Settings->Maven(可直接搜索)->Runner,设置VM-Options,若使用Maven提供的好的骨架创建Maven工程时,需要联网,为了不联网情况下也可以成功创建,那么配置此参数,只要之前有联网下载过相关创建工程的插件,在本地寻找即可,参数为:-DarchetypeCatalog=internal
1)新建Maven工程,参数选择如下,quickstart为maven java工程 的一个骨架(模板),首次使用要联网下载的(这里若是新建工程后出现错误,基本是没有FQ,因为是从国外网站下载的);
2)设置Maven的路径;
3)补充目录结构(resources)
【注意】:若不使用骨架,实际创建出的跟使用骨架的差不多,resources目录也直接有了,只是缺失java目录下,可以自己创建,我们使用maven创建java工程时可以不使用骨架。
以新建一个Servlet为例,新手也可以按步骤搭建自己的环境的。
1)新建Maven工程,参数选择如下,相比于Java工程,只是骨架不同而已,后续步骤一样,不再赘述。
2)补充目录结构(src/main/java,右键Make Directory As Resource Root,高版本的IDEA右键直接可以选择新建java目录),在java目录下新建com.winter.servlet包
3)在Project Structure-》Modules-》web-》Source Roots处勾选,否则会出现,New 时缺失Servlet等选项的问题。
4)在com.winter.servlet包下新建一个Servlet,新建后web.xml会出现error提示,需要自己补全mapping。
5)查看新建的Servlet,发现缺失Servlet包错误,因为是新建的工程,需要在pom.xml文件中导入jar包(
【注意】:若本地仓库没有对应的jar包,可以从maven中央仓库搜索,获取坐标后粘贴进pom文件
6)完成Servlet代码,实现跳转至hello.jsp界面
public class MyServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws javax.servlet.ServletException, IOException {
this.doGet(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws javax.servlet.ServletException, IOException {
request.getRequestDispatcher("/hello.jsp").forward(request,response);
}
}
7)运行项目:mvn tomcat:run,如下操作
【注意1】:访问网页时却出现如下问题,原因是什么呢?
【原因】:在项目编译的时候用的是我们导入的jar包,但在真正运行的时候是调用本地的tomcat里面的jar包,发生了冲突。
【解决办法】:在pom.xml文件中,
【注意】:作用域的设置可以参照下表
修改完后再次启动,访问时就正常了,记着自己写一个hello.jsp哦。
【注意2】:若启动服务器没问题,访问网页时出现这样的错误,可能是因为Maven默认的Tomcat版本太低了;
【解决办法】:pom.xml中添加插件配置为Tomcat7,再次启动时需要输入的指令为mvn tomcat7:run 即可解决。
org.apache.tomcat.maven
tomcat7-maven-plugin
2.2
8080
UTF-8
作于202008262000,已归档
———————————————————————————————————
本文为博主原创文章,转载请注明出处!
若本文对您有帮助,轻抬您发财的小手,关注/评论/点赞/收藏,就是对我最大的支持!
祝君升职加薪,鹏程万里!