tomcat的add/remove deployments列表中没有maven项目的解决方案

今天在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>

猜你喜欢

转载自blog.csdn.net/coffee_fighter/article/details/81482245
今日推荐