好久没做Web方面的开发,今天突然想弄弄SpringMVC,因为不久前又学了点Maven觉得非常好,所以在弄SpringMVC这个Web框架时想使用Maven来做,但是问题又来了,我一直是在Eclipse中使用Maven,而我以前一直用MyEclipse做Web开发(在Eclipse中做web开发个人认为一点都没MyEclipse方便,在MyEclipse中可以直接使用Tomcat调试,很是方便),那么怎样才能既使用MyEclipse又能使用Maven呢,今天作了一翻"捣鼓",写了这篇文章。
就一步一步写来吧:
1. 使用Maven创建webapp工程----原因是使用Maven时一般需要遵循一定的目录结构,虽然也可以使用不同的目录结构,但目前还不熟悉如何修改pom.xml文件达到目的,而且修改太多默认配置对maven来说也不好。
创建方法,在一个目录下使用命令:mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp。按照提示输入相应的参数,中间过程如下:
C代码
1.D:\\study\\workspace4>mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp
2.[INFO] Scanning for projects...
3.....
4.[INFO] Generating project in Interactive mode
5.Define value for property 'groupId': : com.xjd
6.Define value for property 'artifactId': : mywebapp
7.Define value for property 'version': 1.0-SNAPSHOT: :
8.Define value for property 'package': com.xjd: :
9.Confirm properties configuration:
10.groupId: com.xjd
11.artifactId: mywebapp
12.version: 1.0-SNAPSHOT
13.package: com.xjd
14. Y: : Y
15.....
16.[INFO] BUILD SUCCESS
17.[INFO] -----------------------------------------
18.[INFO] Total time: 1:46.199s
19.[INFO] Finished at: Wed Nov 09 15:02:18 CST 2011
20.[INFO] Final Memory: 6M/15M
最后在文件夹下创建了一个Maven的webapp工程,该工程的文件夹根目录下"mywebapp"(请查看上面的过程),该目录的结构为
Java代码
1.mywebapp
2. +---pom.xml
3. +---src
4. +---main
5. +---resources
6. +---webapp
7. +---index.jsp
8. +---WEB-INF
9. +---web.xml
10.
11.
2. 激活配置MyEclipse的Maven插件---我使用的是MyEclipse8.5,它本身就带有一个叫Maven4MyEclipse的插件,只需要激活和配置一下即可。
激活方法:window-->preference-->MyEclipse-->Maven4MyEclipse, 勾选复选框(Enable Mave4MyEclipse features)。
配置方法:就在激活方法打开的节点下,有一个Maven节点,展开这个节点,主要配置其下的两个节点,如下:
Installations: 这一个节点默认使用内置的maven,我们需要使用我们安装的maven,点"add",添加一个我们外部安装的maven即可,注意添加后就勾选上。
User Settings: 默认的是C盘用户目录下的.m2/settings.xml文件,这里要配置外部安装的maven使用的配置文件,如我使用的就是maven安装目录下的conf/settings.xml文件,选择之后别忘了点击一下,下方的"Update Settings"按钮。
3. 用MyEclipse导入Maven创建的工程:
导入有两种方法这里分步讲解:
1) 使用MyEclipse的普通工程导入,步骤如下:
1> 先打开dos,在工程根目录下(mywebapp)运行: mvn eclipse:eclipse---运行完后会发现在工程目录下多出了两个文件.classpath和.project,这是eclipse的工程文件,当然myeclipse也识别
2> 在MyEclipse中使用导入功能,选择File-->Import...-->Existing Projects into workspace,选择工程目录,导入即可
3> 关联Maven,导入后的工程只是一个普通java的工程,并不会与maven插件相关连,此时在工程上点击右键-->Maven4MyEclipse-->Enable Dependency Management,这样,这个工程就与Maven插件关联了(关联后工程根节点左上角上会有一个M的标识)。
2)使用MyEclipse中的Maven工程导入,步骤如下:
1> 在MyEclipse中使用导入功能,选择File-->Import...-->Existing Maven Projects(这里不同),选择工程目录,导入即可。---这里导入进,MyEclipse可能会联网更新索引,很慢,我们可以取消(在Progress面板中点那个大红框),这时工程导进来了,但是没有执行该有的操作,比如maven的dependcy检查等,此时进行一下第2步操作。
2> 更新一下工程配置,右键工程-->Maven4MyEclipse-->Update Project Configuration
4. 补全工程的目录结构,第1步中生成的maven工程目录是不全的,比如我们的java代码,我们的测试目录等,现手动创建,和补全为如下:
C代码
1.mywebapp
2. +---pom.xml
3. +---src
4. +---main
5. +---resources
6. +---java <<添加
7. +---webapp
8. +---index.jsp
9. +---WEB-INF
10. +---web.xml
11. +---test <<添加
12. +---resources <<添加
13. +---java <<添加
14. +---target < 5. 增加MyEclipse的Web Project功能 到目前为止,我们仅仅是把一个Maven的webapp导入到了MyEclipse中,然而在MyEclipse中,这还仅仅是一个Java普通的Maven工程,这一步我们就要为其添加MyEclipse的web project特性。 选择工程-->MyEclipse-->Project Capabilities-->Add Web Project Capabilites,弹出窗口中设置参数如下,再接下来的弹出窗口中选择yes。这样我们的工程就是web工程了(注意工程图标有变化,而且MyEclipse自动依赖了JEE的包)。 6. 配置工程属性,打开工程属性面板---这一步很重要,都是些细节配置,缺一不可啊 1) Java Build Path 1> Source 添加src/main/java, src/test/java, src/test/resources为source folder, 这里就不需要详述了吧,点"add folder"就行。 最小面的"default output folder"修改为"mywebapp/src/main/webapp/WEB-INF/classes"---这点很重要 修改这些source folder的输出目录,其中main/java和main/resources输出到default output folder, 而test/java和test/resources输出到target/test-classes中,(如何修改---点击各节点下的Output Folder, 再点右边的edit按钮就行了)最后设置结果如下: 2> Order And Export 为了显示好看,调整一下显示顺序,不细说了,很简单,看下图: 2)Java Compiler 注意到上面的图片中,我的工程显示jdk为1.4,所以要修改成我们想要的版本,这里就不详述了,应该都会改。 3) Myeclipse-->Web 这一个是用来修改设置工程的web特性的,如下图: 好了,一个MyEclipse的Web Project + Maven webapp的工程就建好了。剩下的就是在myeclipse中开发和调试web最后用maven打包,当然一定要使用maven的依赖特性(把要依赖的jar包直接在pom.xml中加入,然后刷新工程就会自动导入)。 附件为一个创建好的springmvc的helloworld,可以作为一个模板。 -------OK------- ∙springmvc.rar (11 KB) ∙下载次数: 1734 ∙查看图片附件 分享到: Java序列化----不知原处,无法标出转载出, ... | SpringMVC + Maven 工程模板 ∙2011-11-09 16:26 ∙浏览 76399 ∙评论(24) ∙分类:开源软件 ∙相关推荐 评论 24 楼 签手走过 2014-11-05 我现在有一个问题 源文件的资源配置 下边创建不了文件怎么处理呢 比如 我的web.xml 要加载spring文件下的配置文件 创建后会默认为成一个包 这个应该怎么实现 23 楼 云天逸 2014-10-16 牛! 我这终于懂了 以后写教程就应该写成这样的!很清晰! 我用的也是myeclipse6.5 可以搭建成功! 22 楼 daoyongyu 2014-08-29 +---src +---main +---resources 目录下的配置文件默认是不输出到class目录中的,需要在Java Build Path ---> source 选项卡中设置excluded 的过滤属性为空,即将两个**号去除。它默认是排除所有的文件 21 楼 sunzhanchao 2014-06-25 sunzhanchao 写道 释皇天 写道 b_l_east 写道 cczakai 写道 b_l_east 写道 cczakai 写道 src/main/resources 里面配置文件 加载不到webapp下classes路径下 请注意看上面章节“6. 配置工程属性,打开工程属性面板”部分的图片,我用红线标出的,输出目录的设置:Output Folder 我尝试了,确实还是不行,你的myeclipse版本是多少,我的是6.5的。 哦,那可能版本太低了,我写这个文章用的是 MyEclipse8.5 我现在用的是MyEclipse10, 都可以使用。 我的也是8.5的也是资源文件不能自动发布到cleasses目录中。 我的版本 9.0M1 ,也遇到这个问题。刚刚解决了,办法如下: 在OutputFolder最下面那一项,将exclusion中的全部规则移除掉,就可以了。 是的. 不是版本问题,是需要仔细查看每个窗口. 想想到底是怎么回事儿. ,楼上说的对,将Exclusion的全部规则移除就好. 20 楼 qiaowencong 2014-05-21 很好的教程,非常详细简洁 19 楼 sunzhanchao 2014-03-24 释皇天 写道 b_l_east 写道 cczakai 写道 b_l_east 写道 cczakai 写道 src/main/resources 里面配置文件 加载不到webapp下classes路径下 请注意看上面章节“6. 配置工程属性,打开工程属性面板”部分的图片,我用红线标出的,输出目录的设置:Output Folder 我尝试了,确实还是不行,你的myeclipse版本是多少,我的是6.5的。 哦,那可能版本太低了,我写这个文章用的是 MyEclipse8.5 我现在用的是MyEclipse10, 都可以使用。 我的也是8.5的也是资源文件不能自动发布到cleasses目录中。 我的版本 9.0M1 ,也遇到这个问题。刚刚解决了,办法如下: 在OutputFolder最下面那一项,将exclusion中的全部规则移除掉,就可以了。 18 楼 sunzhanchao 2014-03-24 cczakai 写道 src/main/resources 里面配置文件 加载不到webapp下classes路径下 我也遇到了同样的问题 17 楼 huzhian77 2014-03-20 楼主你好 教程很详细 还有一个问题是 怎么在tomcat上运行调试 我的部署方式是在server.xml上加这代码的 这种方式下 启动tomcat 报错 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener 16 楼 qw4286874 2013-07-26 为什么我的myeclipse 10 没有这一项啊? >Maven4MyEclipse-->Enable Dependency Management 15 楼 huangshazsw 2013-06-03 zhu_xiao 写道 用myeclipse new mavenProjet时老报空指针不知道怎么回事,不知道楼主有没有碰到过 同问啊 java.lang.NullPointerException at org.eclipse.m2e.core.internal.lifecyclemapping.LifecycleMappingFactory.getDefaultLifecycleMappingMetadataSource(LifecycleMappingFactory.java:1060) at org.eclipse.m2e.core.internal.lifecyclemapping.LifecycleMappingFactory.getProjectMetadataSources(LifecycleMappingFactory.java:258) at org.eclipse.m2e.core.internal.lifecyclemapping.LifecycleMappingFactory.calculateEffectiveLifecycleMappingMetadata(LifecycleMappingFactory.java:215) at org.eclipse.m2e.core.internal.lifecyclemapping.LifecycleMappingFactory.calculateLifecycleMapping(LifecycleMappingFactory.java:175) at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.setupLifecycleMapping(ProjectRegistryManager.java:527) at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:446) at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:328) at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:279) at org.eclipse.m2e.core.internal.project.registry.MavenProjectManager.refresh(MavenProjectManager.java:58) at org.eclipse.m2e.core.internal.builder.MavenBuilder.build(MavenBuilder.java:97) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:726) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) 14 楼 dbwang 2013-05-23 怎么回事,我使用的myeclipse10,到了第三部,右键工程怎么没有Maven4MyEclipse这个选项。 之前也是按照步骤做的呀,已经激活啦,右键pom有这个Maven4MyEclipse这个选项,但是子菜单明显是多pom进行操作的。 引用 3> 关联Maven,导入后的工程只是一个普通java的工程,并不会与maven插件相关连,此时在工程上点击右键-->Maven4MyEclipse-->Enable Dependency Management,这样,这个工程就与Maven插件关联了(关联后工程根节点左上角上会有一个M的标识)。 13 楼 释皇天 2013-04-28 b_l_east 写道 cczakai 写道 b_l_east 写道 cczakai 写道 src/main/resources 里面配置文件 加载不到webapp下classes路径下 请注意看上面章节“6. 配置工程属性,打开工程属性面板”部分的图片,我用红线标出的,输出目录的设置:Output Folder 我尝试了,确实还是不行,你的myeclipse版本是多少,我的是6.5的。 哦,那可能版本太低了,我写这个文章用的是 MyEclipse8.5 我现在用的是MyEclipse10, 都可以使用。 我的也是8.5的也是资源文件不能自动发布到cleasses目录中。 12 楼 zhu_xiao 2013-04-27 在这隆重感谢楼主。。楼主万岁 11 楼 zhu_xiao 2013-04-27 用myeclipse new mavenProjet时老报空指针不知道怎么回事,不知道楼主有没有碰到过 10 楼 beichen35 2013-01-31 请问你lib目录是怎么生成的?直接在myeclipse中运行package,会将maven dependencies下的jar打进lib中吗?我一直没成功。 9 楼 mbc1987 2013-01-30 好文章啊 楼主厉害 8 楼 b_l_east 2012-06-11 rosyouth 写道 在Myeclipse中使用Maven,mvn package当然没有问题,但调试时Myeclipse会把Maven中provided的jar包也发布到Tomcat中,怎么解决? 这个我目前没用到过,再说你是调试,发布到Tomcat也无防啊,当你真要发布时肯定还是使用 mvn package 打成war包的。 7 楼 rosyouth 2012-06-09 在Myeclipse中使用Maven,mvn package当然没有问题,但调试时Myeclipse会把Maven中provided的jar包也发布到Tomcat中,怎么解决? 6 楼 leaow567 2012-03-15 写的不错,受教了 5 楼 cczakai 2012-03-07 搞定了,myeclipse6.5存在这样的问题,把src 资源文件删除,再新建一个,资源就可以在webapp下classes路径下了。