之前我们一直讲到的都是Maven的普通JavaSE项目的创建,本节我们就来着重讲解Maven的Web项目创建以及可能遇到的一些问题和解决方案。
创建Maven的Web项目和我们之前的操作就有点区别啦,创建项目的方式也不一样,并且我们在日常的Web开发中也不再会去使用之前的那种简单粗暴的方式。
说了这么多,大家可以跟着我们先来创建一个Maven的Web项目练手。
首先New一个Maven Project
选择Next之后点击maven-archetype-webapp
紧接着我们会进入下面的界面,依次输入组织名称,项目名称和版本号,其他的不用变
好,上面的步骤走完,我们来看…欸?报错了,是不是上面的那个步骤有问题?
明确的告诉各位,上面步骤没有问题,我们来看到底是哪里出错了。
顺着红叉的轨迹,我们优先找到src文件夹,我们发现这个目录结构好像跟之前的不太一样?之前的目录是长这个样子。
但是现在只有一个resources目录,其他的都不显示,那么我们的第一个问题就是为什么上面的目录不显示?
解决src test/src不显示的问题
出现上面的问题,主要就是jdk路径的问题,大家照着下面的步骤修改就可以啦
记得勾选上Workspace default JRE(jdk1.8.0_101)
解决jsp报错的问题
jsp报错,本质上是没有导servlet 和jsp的包,因为我们新建Maven项目的时候,这些包是不会自动导入的,那么就需要我们自行配置导入了,大家接着往下看。
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>com.marcogroupId>
<artifactId>webartifactId>
<packaging>warpackaging>
<version>1.0version>
<properties>
<servlet.version>3.1.0servlet.version>
<jsp.version>2.3.1jsp.version>
properties>
<dependencies>
<dependency>
<groupId>javax.servletgroupId>
<artifactId>javax.servlet-apiartifactId>
<version>${servlet.version}version>
<scope>providedscope>
dependency>
<dependency>
<groupId>javax.servlet.jspgroupId>
<artifactId>javax.servlet.jsp-apiartifactId>
<version>${jsp.version}version>
<scope>providedscope>
dependency>
dependencies>
<build>
<finalName>webfinalName>
build>
project>
我们往xml中填充上面的配置,就相当于导入servlet和jsp的jar包,Maven首先回去本地仓库Repository去查找jar包,如果没有就回去远程的仓库去下载
大家可以点开Maven Dependencies查看jar包是否下载全,如果下载全了,F5刷新一下项目jsp就不会报错啦
解决web.xml使用的javaee版本低的问题
点开web.xml之后发现web的版本号是2.3,因为3.0以下的版本都不能使用注解,因此我们需要调整web.xml的版本
点开项目的Propeties之后,选择Project Facets之后,去掉Dynamic Web Module的勾勾,然后点击Apply吗,再次勾上Dynamic Web Module的勾勾,在Version处选择Web的版本号为3.0或者3.1
点击之后先不要慌着点Apply,我们会发现下方会出现一个Further configuration available,我们点进去
然后将Content directory修改成src/main/webapp,为什么要这么修改呢?大家想想我们之前的web项目这里填写的是什么?是WebRoot对吧,这里的src/main/webapp就相当于WebRoot根目录,这么说大家应该明白了吧~
修改完成之后,我们web版本号就正常啦
接下来我们试着运行一下看我们的web项目是否可以跑起来
第一步:修改pom.xml
我们先点开pom.xml添加tomcat运行插件配置
<build>
<finalName>webfinalName>
<plugins>
<plugin>
<groupId>org.apache.tomcat.mavengroupId>
<artifactId>tomcat7-maven-pluginartifactId>
<version>2.2version>
<configuration>
<uriEncoding>UTF-8uriEncoding>
<port>8080port>
<path>/marcopath>
configuration>
plugin>
plugins>
build>
第二步:运行项目
弹出框的三个部分需要我们修改,中间的${workspace_loc:/carrent_plus}
部分点击workspace选择你需要运行的项目就可以啦,Goals这里就固定按照tomcat7:run
这种方式写
如果最终的运行结果是这样的就代表配置成功啦
既然都已经就解决了好几个问题了,那我不妨再提一提后续项目运行可能出现的问题,这样大家后续如果出现类似的问题翻到我这篇博文也能够顺利解决啦~
解决Cannot change version of project facet Dynamic web module to 3.0
可能后续大家还会碰到上面这样的问题,所以在这里我就一起说啦~
如果后续运行项目出现这种问题,我们打开项目所在目录下的.settings文件夹
找到org.eclipse.wst.common.project.facet.core.xml
把
改成
把
改成
接着打开存放依赖的pom.xml文件,因为我们的jdk运行环境可能会存在差异,一般项目跑起来是没有问题的,但是如果jdk的版本和当前的Maven运行环境不匹配,也会出现项目跑不起来的问题,那么解决方案就是在pom.xml中添加如下配置
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-compiler-pluginartifactId>
<version>3.7.0version>
<configuration>
<source>1.8source>
<target>1.8target>
configuration>
plugin>
这样就没有问题啦~
解决jar包下载不全的问题
这个问题还是出现的比较频繁的,一般出现这种问题的原因都是网络环境不好,导致远程下载的包不齐全,不过也就仅仅限于我们第一次下载会遇到,那么一旦我们程序运行的时候出现了xxx jar not found 但是你确确实实在pom.xml中配置的情况时,就务必按照我们的步骤去操作,十有八九是jar包没有下载完全导致的。
打个比方,如果运行的时候控制反馈spring-jdbc has not found 的时候
我们右击properties,进到下面这个页面,找到这个jar包下载的路径
将下载的路径D:/DevTools/server/Repository/org/springframework/spring-jdbc/4.3.24.RELEASE/
复制
运行之后我们如果发现jar包下载的不对,比如说出现一长串你不认识的jar包的名字,那么我们回到上一级,然后删除这个目录
回到Eclipse中之后,右击Maven中的Update Project
接着勾选上Force Update of Snapshots/Releases之后点击Ok就可以啦