您的位置:首页 > 编程语言 > Java开发

创建一个maven web项目的种种问题

2017-07-13 19:05 274 查看
一个还不错的创建maven web步骤
如果你觉得这个教程已经够了,下面就不用看了。
如果你觉的还有很多疑惑,请继续往下看,说不定会有所启发

几个预备知识:

MAVEN项目标准目录结构 (重要)

Eclipse视图:navigator、 package explorer、 project explorer

Eclipse Project Facets各项意义

Eclipse中的build path详解

eclipse创建文件package,source folder和folder区别及相互转换(重要)

创建一个Maven web项目,网上有很多教程,大致有这么几类:
1. 直接创建maven web【一步到位型,也就是我一开始给的那个链接的方法】

右键——new——other——Maven——maven Project——Next——选择maven-archetype-webapp——填Group Id 和Artifact Id, Finish——其他一些关键maven项目操作

2. maven + web【maven转web型1】

右键——new——other——Maven——maven Project——Next——勾选上Create a simple Project——填Group Id 和Artifact Id, Finish

3. maven + web【maven转web型2】

右键——new——other——Maven——maven Project——Next——Next(默认选择那个quickl start)——填Group Id 和Artifact Id, Finish——其他一些关键maven项目操作

4. web + maven【web转maven型】

a.先创建一个Dynamic Web Project项目

b.选中项目——右键——configure——Convert to maven project(转换为maven项目,可见的表现就是在项目根目录增加了pom.xml文件)——其他一些关键maven项目操作

那么“其他一些关键maven项目操作”都有哪些操作呢,虽然 以上方法各不相同,但因为最终要达到的目的是一样的,所以我总结一些共性操作步骤:
1. 先保证jdk版本的正确性。

a.设置项目jdk【见下面“设置项目jdk”操作步骤】
b.设置项目编译java版本【见下面“设置项目编译java版本”】

2. 把maven项目标准结构创建出来:(注意,这都是“文件夹”)

src/main/java【必须】
src/main/webapp【必须】
src/main/resource
src/test/java【必须】
src/test/resource

3. 把src/main/java和src/test/java设置为“source folder ”(这个文件夹内的东西 要被编译)【见“设置文件夹为source folder”】
4. 设置web特性,生成WebContent文件夹(包括里面的web.xml,如果已经有了,或者是直接创建的maven-web项目就不用做这一步了)【见“设置maven项目的web特性”】
5. 把WebContent中的WEB-INF和META-INF两个文件夹拷贝到src/main/webapp中(如果已经有了就不用做了)
6. 设置部署路径【见“设置部署路径”】

基本只要把上面这6步都做过的,应该就可以创建出一个没有错误的Mavent web项目
但是由于eclipse本身的各种各样的问题,不能保证一定没有错,有些错误是那种:同样的操作做第一遍有错,做第二遍可能就没了,也可能出现新的错误。此时那就重新做一遍吧。这几种创建项目的方式我也是来来回回的重试了N次(但越做 出错的可能就越小)
总的来说 创建一个maven web项目,没有“一键完成”的方式,由于maven的目录结构、部署路径问题、jdk版本问题等,多多少少都要需要其他操作配置

========具体的一些操作方法========================
设置项目jdk:
方法一:(常规操作)

a.右键——Build Path——Configure Build Path——Libraries(选项卡)
b.选中条目中的JRE system Library[...]【此时右边的Remove按钮被点亮】
c.点击Remove
d.点击右边按钮Add Library
e.选择JRE System Library
f.选择Alternate JRE(如果你默认jdk不是这个项目所需要的);或者直接选择Workspace default JRE...(如果这个项目需要就是eclipse默认的jdk)
g.点击finish。(该子页面关闭)
h.点右下角Apply按钮(生效)

方法二:(快捷操作)

a.打开eclipse项目视
c8b7
图“Package Explorer”
b.在该视图中找到你的项目,并打开
c.在里面可以看到JRE System Library,选中它,右键——properties
d.下面的操作同方法一

设置项目编译java版本
选中项目——右键——properties——Java Compiler

将右边Compiler compliance level设置为你需要的java版本

设置文件夹为source folder
1. 切换到Project Explorer视图
2. 选中文件夹src/main/java(如果是树形的结构,就直接选中java这个目录)——右键——Build Path——Use as Source Folder(然后你就在项目结构上可以看到src/main/java出现在Java Resource下面)
3. 同理把src/test/java也设置为source folder

设置maven项目的web特性
1.选中项目——右键——properties——Project Facets

勾选上Dynamic Web Module,选择自己需要的版本(此时在该页面下面应该会出现Further configurtion available...的链接,如果没出现也没关系,也先点Apply让它生效。然后再把那个勾选去掉,再点Apply,再选中那个选项,此时链接应该就出现了)
2. 点击链接“Further configurtion availabl...”
3. 在弹出的页面里勾选上Generate web.xml deplogyment descriptor(生成web.xml)
4.点击“ok”,再返回项目就能看到熟悉的WebContent目录了

设置部署路径
1.选中项目,右键——properties——Deployment Assembly
设置成如下图的样子



主要是把原来的WebContent删除(如果有的话),增加上webapp
增加Maven Dependencies

a.点击右边Add按钮

b.选中Java Bulld Path Entries,点击next

c.选中Mavent Dependenties

====================================================
注意一个操作问题:
右键——maven——update maven project,这个操作和刷新不一样,它有“置回默认值”的作用,比如你 之前你设置的使用jdk1.8编译,update后,就可能变为默认1.5了

遗留问题:(有知道的请留言告知,我在博客上做补充)
一:
方法2 中我实验的结果是:有两个错误总是解决不了

1.Dynamic Web Module 3.0 requires Java 1.6 or newer.【实际上我用的jdk1.8】
2.One or more constraints have not been satisfied【网上说原因是:Deployment Assembly跟Java版本不匹配,即maven默认编译版本与使用的jdk不匹配。但我用的都是jdk1.8,哪来的不一致】

二:
如图



这个Maven Dependencies我在用方法2和方法4创建Maven web项目总显示不出来,但实际上他在Build Path里是有的:



而且也不在网上有人说的Library下面



我在无数次实验的过程中,甚至还出现过使用方法2创建,创建完Maven项目是有的,但加上web特性之后就没了。不过似乎到目前为止,这个现象并没有引起什么问题,这个项目我会继续做下去,有相关问题我会继续补充修改该博文

三:
说实话,虽然这些方法我都试了,但是,我更喜欢用方法3,因为方法1也有问题:

1. 比如我一开始给的那个链接,他在第3步选maven-archetype-webapp是这个样子的



而我是这个样子的:



不知到是不是因为这个的,我在第8步,总是选不了Dynamic Web Module 3.0,报错:
Cannot change version of project facet Dynamic Web Module to 3.0
虽然在网上也查到解决办法了,解决办法链接见最后的“解决Cannot...”,但总觉得不好。而且还有个问题:



我们发现 它自动生成的webapp里面没有META-INF文件夹,这虽然不是什么大问题(现在我还不知道它会引起什么问题),需要的时候可以从其他地方拷贝进去。
但是有了这两个问题 需要一个一个解决,总觉得这方法“不正宗”,所以我推荐方法3

==========================================
你可能需要的一些链接:
在eclipse中新建Dynamic web project时选择2.5和3.0的区别
解决Cannot change version of project facet Dynamic Web M
不同版本(2.3,2.4,2.5,3.0)的Servlet web.xml 头信息(注意:这里面3.0的那个头信息是错的,如果需要,请自己在eclipse中通过创建web项目自动生成)
web.xml is missing and <failOnMissingWebXml>
is set to true【stackoverflow,外国网站,可能打开会很慢。这个错意思就是说:当你建一个war输出类型的maven项目时,maven认为这是一个web项目,应该有一个web.xml,但它却没发现,所以报错。这个错可以在做了步骤6后应该就可以解决】

整理的比较匆忙,如有问题,欢迎拍砖,我会尽快更改
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javaweb maven eclipse