0%

【Maven配置一】intellij idea从零开始用maven创建web工程+配置jetty插件+引入jar包

Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。

通过使用Maven,我们可以便捷的使用一段代码来引入jar包,从而不再为杂乱的引用而烦恼,同时远离jar包各种报错的折磨。


创建项目

新建项目

选择Mavenorg.apache.maven.archetypes:maven-archetype-webappmaven-archetype-webapp:RELEASENEXT

此处的webapp千万不能选错,必须要选择apache.maven下的webapp,否则会出现严重问题!(我会说我在这里卡了3个小时嘛) 在这里插入图片描述

## 项目命名 - Name: 项目名 - Location: 项目路径 - GroupId: 第一段为域,第二段为公司名/组名,最后一段一般为项目名;域又分为orgcomcn等等许多,其中org为非盈利组织,com为商业组织 - Artifactid: 不带版本号的项目名,要求使用小写字母,且没有特殊符号 - Version: 版本,默认的SNAPSHOT代表快照 在这里插入图片描述
## 配置Maven - Maven home directory: Maven的安装路径,这里笔者已经下载安装好Mavenidea其实已经集成好Maven,因此也可以使用自带的Maven) - User setting file: 配置文件,此处可以使用安装目录下自带的Maven/conf/settings.xml,也可以自己编写。 - Local repository: 仓库目录,可以自己设定jar包的下载位置 在这里插入图片描述 这是笔者使用的配置文件,它将仓库设置到自定义的目录下,并使用阿里提供的镜像文件代替官方仓库,以加快下载速度。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

<pluginGroups />
<proxies />
<servers />

<localRepository>D:/server/maven/repository</localRepository>

<mirrors>
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>http://repo1.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo2.maven.org/maven2/</url>
</mirror>
<mirror>
<id>ibiblio</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
</mirror>
<mirror>
<id>jboss-public-repository-group</id>
<mirrorOf>central</mirrorOf>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>google-maven-central</id>
<name>Google Maven Central</name>
<url>https://maven-central.storage.googleapis.com
</url>
<mirrorOf>central</mirrorOf>
</mirror>
<!-- 中央仓库在中国的镜像 -->
<mirror>
<id>maven.net.cn</id>
<name>oneof the central mirrors in china</name>
<url>http://maven.net.cn/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</settings>
稍作等待,项目就生成完成了。 在这里插入图片描述

配置Tomcat服务器(使用本地文件)

点击右上角的ADD CONFIGURATION → 点击左上角的+号 → Tomcat ServerLocal,新建一个Tomcat配置。 在这里插入图片描述 点击右下角的FIX,选择xxx_war_exploded.

war exploded模式是将WEB工程以当前文件夹的位置关系上传到服务器,即直接把文件夹、jsp页面 、classes等等移到Tomcat部署文件夹里面,进行加载部署。

如果没有xxx_war_exploded选项,在SettingsBuild, Execution, DeployBuild ToolsMavenImporting → 勾选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同样可以内嵌JettyJettyTomcat都可以搭建服务器,但是Jetty更加轻量化和灵活,适合小型项目。

添加plugin项

找到pom.xmlpom.xml主要描述了项目的maven坐标,依赖关系,开发者需要遵循的规则,缺陷管理系统,组织和licenses,以及其他所有的项目相关因素,是项目级别的配置文件。

pom.xml<build>pluginManagement<plugins>中加入以下内容:

  • groupId: 组名
  • artifactId: jar名
  • version: 版本
  • scanIntervalSeconds: 扫描时间,即多久扫描一次文件是否变动,若有变动就会修改项目
  • port: 端口号(可以自定义,不过为了不与Tomcat冲突,一般不设为8080)
  • contextPath: 根目录,设为/即没有额外的目录,该配置的根目录为http://localhost:8080/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<plugin>  
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.4.5.v20170502</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<httpConnector>
<port>8888</port>
</httpConnector>
<webApp>
<contextPath>/</contextPath>
</webApp>
</configuration>
</plugin>

配置好之后Maven就会自动下载jar,并更新到项目中。

其实关于公司名、jar名、版本号,我们并不需要自己书写,我们可以通过查询:https://mvnrepository.com/获取对应的信息。

例如搜索jetty,选择对应的版本号,就可以得到: 在这里插入图片描述 ### 配置命令行 接下来我们来配置启动jetty插件的命令行,同样点击右上角 → 选择Edit Configurations → 在左边栏找到Maven → 在Command line中输入clean jetty:run,并将配置命名。

这样做之后,每次运行该配置,就相当于在命令行中输入:

1
2
mvn clean
mvn jetty:run
从而启动Jetty服务器。 在这里插入图片描述 运行效果: 在这里插入图片描述


案例:引入jstl包

我们再来演示一下在Maven中使用jstl的方法,以体现其便捷。

添加dependency项

同样,在pom.xml<dependencies>标签内引入,这次不是plugindependencies代表依赖,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表达式,这样就可以正常运行啦: 在这里插入图片描述