eclipse中的meavn项目添加到tomcat时找不到项目问题

转自https://blog.****.net/coffee_fighter/article/details/81482245

今天在myeclipse 2017 CI这个IDE上new了一个maven项目

eclipse中的meavn项目添加到tomcat时找不到项目问题

然后想通过右键tomcat,点击add/remove deployments,想把刚刚创建的maven项目demo_maven发布到tomcat中,结果发现

tomcat的add/remove deployments列表中没有刚刚创建的maven项目demo_maven

eclipse中的meavn项目添加到tomcat时找不到项目问题

解决步骤:

一、右键刚刚创建的maven项目demo_maven,选择Properties(或者直接选中刚刚创建的maven项目,按快捷键alt+enter),点击Project Facets,然后在窗口中选中Dynamic Web Module、java、javaScript这3项,然后点击ok

eclipse中的meavn项目添加到tomcat时找不到项目问题

二、demo_maven工程目录中会多出一个WebRoot目录,WebRoot目录下有META_INF、WEB_INF目录

eclipse中的meavn项目添加到tomcat时找不到项目问题

三、然而pom.xml中还是会报错:web.xml is missing and <failOnMissingWebXml> is set to true

eclipse中的meavn项目添加到tomcat时找不到项目问题

该报错的意思是缺少web.xml,解决方法是:加入web.xml或者在pom.xml加入<failOnMissingWebXml> true</failOnMissingWebXml>标签

我直接是通过添加web.xml解决该报错的,右键项目,选择java ee tools --> generate deployments descriptor stub即可在webroot/web inf下生成web.xml文件了,pom.xml的报错也消失了

四、但是一个标准的maven项目中并没有webroot这种名称的目录,这样的工程虽然现在或许能够直接右键tomcat直接发布出去并且能够正常使用,但是maven install打包出来的war包是不能够正常运行的。所以,现在我们需要将工程目录修改成符合maven目录规范的maven工程。

直接将webroot中的所有文件目录都copy到src/main/webapp中,然后将webroot目录删除

eclipse中的meavn项目添加到tomcat时找不到项目问题

右键项目demo_maven,选择Properties(或者直接选中刚刚创建的maven项目,按快捷键alt+enter),选择Deployment下的Deployment Assembly

eclipse中的meavn项目添加到tomcat时找不到项目问题

然后选中/WebRoot,点击右侧的remove

eclipse中的meavn项目添加到tomcat时找不到项目问题

点击add

eclipse中的meavn项目添加到tomcat时找不到项目问题

点击Folder-->next

eclipse中的meavn项目添加到tomcat时找不到项目问题

选中src/main/webapp这个目录,点击finish

eclipse中的meavn项目添加到tomcat时找不到项目问题

之后继续点击add,点击java build path entries,然后next

eclipse中的meavn项目添加到tomcat时找不到项目问题

选中Maven Dependencies,然后点击finish

eclipse中的meavn项目添加到tomcat时找不到项目问题

点击ok

eclipse中的meavn项目添加到tomcat时找不到项目问题

五、到了这步,大功告成(或许项目还会因为缺少dependency而报错,只要在pom.xml中加入servlet等等这些项目需要的dependency即可解决),右键tomcat,点击add/remove deployments,在列表既可以看到刚刚创建的maven项目demo_maven,选中项目,点击add,就可以部署maven项目到tomcat中了。同时maven install产生的war包也是可以正常使用的。

eclipse中的meavn项目添加到tomcat时找不到项目问题

一般初始化maven需要在pom.xml中加入的dependency为:

  1. <dependencies>
  2. <dependency>
  3. <groupId>javax</groupId>
  4. <artifactId>javaee-api</artifactId>
  5. <version>7.0</version>
  6. <scope>provided</scope>
  7. </dependency>
  8. <dependency>
  9. <groupId>javax.servlet</groupId>
  10. <artifactId>javax.servlet-api</artifactId>
  11. <version>4.0.1</version>
  12. <scope>provided</scope>
  13. </dependency>
  14. <dependency>
  15. <groupId>javax.servlet.jsp</groupId>
  16. <artifactId>javax.servlet.jsp-api</artifactId>
  17. <version>2.3.2-b02</version>
  18. <scope>provided</scope>
  19. </dependency>
  20. <dependency>
  21. <groupId>jstl</groupId>
  22. <artifactId>jstl</artifactId>
  23. <version>1.2</version>
  24. </dependency>
  25. <dependency>
  26. <groupId>junit</groupId>
  27. <artifactId>junit</artifactId>
  28. <!-- 默认的版本为3.8.1,修改为4.x,因为3.x使用的为编程的方式,4.x为注解的形式。 -->
  29. <version>4.12</version>
  30. </dependency>
  31. </dependencies>