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包的下载位置
这是笔者使用的配置文件,它将仓库设置到自定义的目录下,并使用阿里提供的镜像文件代替官方仓库,以加快下载速度。
![]() |
配置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
2mvn clean
mvn jetty:runJetty服务器。
运行效果: 
案例:引入jstl包
我们再来演示一下在Maven中使用jstl的方法,以体现其便捷。
添加dependency项
同样,在pom.xml内<dependencies>标签内引入,这次不是plugin
,dependencies代表依赖,plugin则是插件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
等待jar下载配置完成,我们就可以直接使用jstl了,是不是很方便呢?我们来试一下。
首先引入标签库,设置前缀,然后尝试一下forEach循环语句:
1
2
3
4
5
6
7
8
9<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<body>
<h2>Hello World!</h2>
<c:forEach var="i" begin="1" end="10">
${i}<br>
</c:forEach>
</body>
</html>
我们本想得到从1到10的循环,此处显示的却是10个el表达式,难道jstl的引入有问题?显然不是,如果jstl有问题,我们连循环语句都无法使用。
启用el表达式
显然,这里的问题不是jstl,而是el表达式,在Maven环境下,el表达式默认是不启用的,浏览器会将el表达式作为普通的字符串处理。
为了启用el表达式,我们需要在jsp的开头添加:
1
<%@ page isELIgnored="false" %>
el表达式,这样就可以正常运行啦: 

这是笔者使用的配置文件,它将仓库设置到自定义的目录下,并使用阿里提供的镜像文件代替官方仓库,以加快下载速度。
