eclipse中的meavn项目添加到tomcat时找不到项目问题
转自https://blog.****.net/coffee_fighter/article/details/81482245
今天在myeclipse 2017 CI这个IDE上new了一个maven项目
然后想通过右键tomcat,点击add/remove deployments,想把刚刚创建的maven项目demo_maven发布到tomcat中,结果发现
tomcat的add/remove deployments列表中没有刚刚创建的maven项目demo_maven
解决步骤:
一、右键刚刚创建的maven项目demo_maven,选择Properties(或者直接选中刚刚创建的maven项目,按快捷键alt+enter),点击Project Facets,然后在窗口中选中Dynamic Web Module、java、javaScript这3项,然后点击ok
二、demo_maven工程目录中会多出一个WebRoot目录,WebRoot目录下有META_INF、WEB_INF目录
三、然而pom.xml中还是会报错:web.xml is missing and <failOnMissingWebXml> is set to true
该报错的意思是缺少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目录删除
右键项目demo_maven,选择Properties(或者直接选中刚刚创建的maven项目,按快捷键alt+enter),选择Deployment下的Deployment Assembly
然后选中/WebRoot,点击右侧的remove
点击add
点击Folder-->next
选中src/main/webapp这个目录,点击finish
之后继续点击add,点击java build path entries,然后next
选中Maven Dependencies,然后点击finish
点击ok
五、到了这步,大功告成(或许项目还会因为缺少dependency而报错,只要在pom.xml中加入servlet等等这些项目需要的dependency即可解决),右键tomcat,点击add/remove deployments,在列表既可以看到刚刚创建的maven项目demo_maven,选中项目,点击add,就可以部署maven项目到tomcat中了。同时maven install产生的war包也是可以正常使用的。
一般初始化maven需要在pom.xml中加入的dependency为:
-
<dependencies>
-
<dependency>
-
<groupId>javax</groupId>
-
<artifactId>javaee-api</artifactId>
-
<version>7.0</version>
-
<scope>provided</scope>
-
</dependency>
-
<dependency>
-
<groupId>javax.servlet</groupId>
-
<artifactId>javax.servlet-api</artifactId>
-
<version>4.0.1</version>
-
<scope>provided</scope>
-
</dependency>
-
<dependency>
-
<groupId>javax.servlet.jsp</groupId>
-
<artifactId>javax.servlet.jsp-api</artifactId>
-
<version>2.3.2-b02</version>
-
<scope>provided</scope>
-
</dependency>
-
<dependency>
-
<groupId>jstl</groupId>
-
<artifactId>jstl</artifactId>
-
<version>1.2</version>
-
</dependency>
-
<dependency>
-
<groupId>junit</groupId>
-
<artifactId>junit</artifactId>
-
<!-- 默认的版本为3.8.1,修改为4.x,因为3.x使用的为编程的方式,4.x为注解的形式。 -->
-
<version>4.12</version>
-
</dependency>
-
</dependencies>