首先我们需要新建一个Maven工程:点击File-->new-->Maven Project
,弹出如图界面,点击next:
点击next后,填写包名和项目名,点击finish,如图:
Maven项目的配置:
1、修改web.xml
由于Maven中的 maven-archetype-webapp
样板项目的 web.xml
是2.3版本的,我们需要替换成新版本:
可以在Eclipse中新建一个web工程,将它 WebContent/WEB-INF
目录下的 web.xml 文件复制替换掉我们的 Maven 项目中 src/main/webapp/WEB-INF/
目录下的web.xml
文件。
原来的web.xml
内容:
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
</web-app>
更改后的web.xml内容:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>mydemo</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
pom.xml 里面build 标签下添加 maven编译插件:
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
3、添加缺少的目录并指定输出路径Maven规定,必须创建以下几个包,并且分别对应相应的输出路径
src/main/resources
src/main/java
src/test/resources
src/test/java
右键项目----->BUild Path----->Configure Build Path...
(1)在Order and Export
栏目里(这里是控制项目中包的显示顺序的)我们会发现有几个目录显示missing(丢失),随便选中一个改变下顺序(Up 或者 Down 或者 Top 或者 Bottom),然后点击应用,OK,丢失的目录会在项目中显示出来,再次进到这个地方,红叉标识已经消失了。(这可能是eclipse中maven插件的bug)
(2)接着在Source里会发现已经有三个目录了,所以点击Add Folder… 添加缺少的目录(这里注意把Allow output folders for source folders
勾上,方便下一步进行输出路径的设置)
点击Add Folder...--->Create New Folder...
,输入缺少的包名,直接点击完成,回到这个界面点击OK就行
3)接着就会看到Source
这里多了一个刚才添加的包,这个新加的包没有指定输出目录,需要进行修改:
在Source 里面设定4个文件夹的输出Output folder,双击进行修改
分别修改输出路径为
/src/main/resources 对应 target/classes
/src/main/java 对应 target/classes
/src/test/resources 对应 target/test-classes
/src/test/java 对应 target/test-classes
对应的都设置一下即可;
最终的效果如下图所示:
此时的目录结构为:
将Maven项目转换成Dynamic Web Project:
(1)右键项目----->Properties
在左侧选择 Project Facets,单击右侧的 Convert faceted from
刚进来时是这样的,需要把Dynamic Web Module
(动态web模块)的版本修改为 3.1 (最新版),Java的版本修改为项目用的1.8
这里可能会报一个错误,在修改动态web模块版本的时候会提示Cannot change version of project facet Dynamic Web Module to 3.1
,因为你没有把java环境版本改为1.8,将旧的1.5版本的remove掉,重新add Library进新的1.8,然后在project Facet 界面将java改为1.8即可;
修改完成是这样的,接下来单击 Further Configuration available...
(进一步可用的配置)链接
下面如果没有显示出 Further Configuration available...
的话,可以在Dynamic Web Module 前去掉打钩,点击应用,然后再填上钩,再点击应用,一般 Further Configuration available...
就会出现了。
修改 Content directory
(内容目录) 的值 WebContent
为 src/main/webapp
,单击OK,然后回到上一步窗口直接点击OK
这里可能出现的问题是,会给你个提示目录错误的弹窗,不要紧,你可以检查下之前文件输出路径的设置是否有问题(Java Build Path -----> Source
),修改过来应该就没问题;
完成这一步之后你可以检查下你的Java Build Path
中的Libraries
中的jdk版本,还有Java Compiler (编译环境),发现都已经改为1.8版本了。
(2)接下来你项目中的pom.xml 可能报一个错 web.xml is missing and <failOnMissingWebXml> is set to true
,如果没报错,可以忽略不看
解决办法:
使用Maven创建项目有时在pom.xml
的war处出现failOnMissingWebXml
的错误,根据pom.xml
可以知道这个项目是web项目,打包时打成war包。
错误提示的是丢失web.xml
,所以如果项目里没有web.xml
,则在项目里添加一个web.xml
,刷新一下项目,就应该没有错误了。
如果还有错的话就需要在eclispe上方点击Project ----->Clean
清理一下这个项目了。
经过这两步错误就应该已经清除了。
(3)到这一步,web项目就创建完毕了,可以看一下你的项目结构,如果有什么build目录,WebContent
目录的话可以直接删除(确保你的输出目录之类的已经设置好了)
直接把页面资源放置在src/main/webapp/
目录下,所以最终的项目结构如下所示: