Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
通过使用Maven,我们可以便捷的使用一段代码来引入jar包,从而不再为杂乱的引用而烦恼,同时远离jar包各种报错的折磨。
创建项目
新建项目
选择Maven → org.apache.maven.archetypes:maven-archetype-webapp → maven-
archetype-webapp:RELEASE → NEXT
此处的webapp千万不能选错,必须要选择apache.maven下的webapp,否则会出现严重问题!(我会说我在这里卡了3个小时嘛)
项目命名
Name: 项目名Location: 项目路径GroupId: 第一段为域,第二段为公司名/组名,最后一段一般为项目名;域又分为org、com、cn等等许多,其中org为非盈利组织,com为商业组织Artifactid: 不带版本号的项目名,要求使用小写字母,且没有特殊符号Version: 版本,默认的SNAPSHOT代表快照
配置Maven
Maven home directory:Maven的安装路径,这里笔者已经下载安装好Maven(idea其实已经集成好Maven,因此也可以使用自带的Maven)User setting file: 配置文件,此处可以使用安装目录下自带的Maven/conf/settings.xml,也可以自己编写。Local repository: 仓库目录,可以自己设定jar包的下载位置
这是笔者使用的配置文件,它将仓库设置到自定义的目录下,并使用阿里提供的镜像文件代替官方仓库,以加快下载速度。
1 |
|
稍作等待,项目就生成完成了。
配置Tomcat服务器(使用本地文件)
点击右上角的ADD CONFIGURATION → 点击左上角的+号 → Tomcat Server → Local,新建一个Tomcat配置。
点击右下角的FIX,选择xxx_war_exploded.
war exploded模式是将WEB工程以当前文件夹的位置关系上传到服务器,即直接把文件夹、jsp页面
、classes等等移到Tomcat部署文件夹里面,进行加载部署。
如果没有xxx_war_exploded选项,在Settings → Build, Execution, Deploy → Build
Tools → Maven → Importing → 勾选Import Maven projects automatically

最后,点击运行,web项目就成功打开啦。(项目已经为我们自动生成了一个带有Hello World!的index.jsp)


引入jar包
使用jetty插件搭建服务器
关于Tomcat和Jetty
使用外部的Tomcat程序作为服务器固然可行,然而在使用外部的Tomcat时,我们在向Maven中引入jar的同时,也要在Tomcat/lib中加入jar,这使得项目的构建变得麻烦,违背了Maven便于管理的初衷。
于是,Maven给我们提供了更轻量便捷的方式——使用内嵌的服务器插件。Maven支持内嵌Tomcat,所谓内嵌,即我们不需要额外下载Tomcat,只要引入依赖即可使用,故免去了修改外部文件的麻烦。
在本文中,笔者使用Jetty插件作为演示,Maven同样可以内嵌Jetty,Jetty与Tomcat都可以搭建服务器,但是Jetty更加轻量化和灵活,适合小型项目。
添加plugin项
找到pom.xml,pom.xml主要描述了项目的maven坐标,依赖关系,开发者需要遵循的规则,缺陷管理系统,组织和licenses,以及其他所有的项目相关因素,是项目级别的配置文件。
在pom.xml内<build> →pluginManagement → <plugins>中加入以下内容:
groupId: 组名artifactId: jar名version: 版本scanIntervalSeconds: 扫描时间,即多久扫描一次文件是否变动,若有变动就会修改项目port: 端口号(可以自定义,不过为了不与Tomcat冲突,一般不设为8080)contextPath: 根目录,设为/即没有额外的目录,该配置的根目录为http://localhost:8080/
1 | <plugin> |
配置好之后Maven就会自动下载jar,并更新到项目中。
其实关于公司名、jar名、版本号,我们并不需要自己书写,我们可以通过查询:https://mvnrepository.com/获取对应的信息。
例如搜索jetty,选择对应的版本号,就可以得到:
配置命令行
接下来我们来配置启动jetty插件的命令行,同样点击右上角 → 选择Edit Configurations → 在左边栏找到Maven →
在Command line中输入clean jetty:run,并将配置命名。
这样做之后,每次运行该配置,就相当于在命令行中输入:
1 | mvn clean |
从而启动Jetty服务器。
运行效果:
案例:引入jstl包
我们再来演示一下在Maven中使用jstl的方法,以体现其便捷。
添加dependency项
同样,在pom.xml内<dependencies>标签内引入, 这次不是plugin
,dependencies代表依赖,plugin则是插件:
1 | <dependency> |
等待jar下载配置完成,我们就可以直接使用jstl了,是不是很方便呢?我们来试一下。
首先引入标签库,设置前缀,然后尝试一下forEach循环语句:
1 | <% uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> |
运行效果:
我们本想得到从1到10的循环,此处显示的却是10个el表达式,难道jstl的引入有问题?显然不是,如果jstl有问题,我们连循环语句都无法使用。
启用el表达式
显然,这里的问题不是jstl,而是el表达式,在Maven环境下,el表达式默认是不启用的,浏览器会将el表达式作为普通的字符串处理。
为了启用el表达式,我们需要在jsp的开头添加:
<%@ page isELIgnored="false" %>
即不忽略el表达式,这样就可以正常运行啦: