hollins

解决Cannot change version of project facet Dynamic Web Module to 3.1

笔者在使用Spring Tool Suite 创建maven项目时,选择了Artifact Id为maven-artchetype-webapp,由于STS本身的配置还没更新,导致Project Facets中的Dynamic Web Model是2.3版本的。如果尝试直接将2.3修改至3.1,将会导致报错

Cannot change version of project facet Dynamic web module to 3.1

网上看了许多解决方案,有人是直接修改org.eclipse.wst.common.project.facet.core.xml,但严格来说,这文件并不能算maven项目的一部分。因此,笔者尝试用更合理的方法解决Dynamic Web Module的问题,顺便解决JRE System Library 1.5的问题。

去掉Dynamic Web Module的选项的对勾

如图所示
去掉Dynamic Web Module的选项的对勾
然后点击 Apply按钮即可

配置web.xml文件

1
2
3
4
5
6
7
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:web="http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee">
</web-app>

配置maven

修改servlet api的dependency

注意version设置为3.1.0以及scope设为provided

1
2
3
4
5
6
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>

新增plugin

1
2
3
4
5
6
7
8
9
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>

更新项目

在完成上述配置后,右击project,选择Maven->Update Project 或直接按快捷键 Alt+F5 更新项目配置。结果如下图所示:
最终的Dynamic Web Model

大功搞成!


参考:stackoverflow