問題:如下圖,使用maven創建webapp項目時,默認使用maven-archetype-webapp這個archetype,由於這個archetype比較古老,有如下缺點:
1. 默認生成的項目會報錯
The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path index.jsp /demo/src/main/webapp line 1 JSP Problem2. 默認依賴jdk 1.5
3. Dynamic Web Module 版本為2.3
所以決定自己手動創建一個較新的webapp項目,這個新體現在以下幾個方面:
1. 依賴jdk 1.7
2. Dynamic Web Module 版本為3.0
過程如下
1. 勾選create a simple project (創建一個簡單的項目,跳過archetype選擇)
2. 正常填寫maven項目的信息,點擊Finish
3. 產生的項目同樣會報錯,需要修改以下地方,首先時pom.xml文件,如下圖所示
<build>
<plugins>
<!-- 配置為jdk1.7 -->
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<!-- servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<!-- jsp-api -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
</dependency>
<!-- jstl 1.2 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- slf4j-log4j12 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.7</version>
</dependency>
</dependecies>
4. 其次需要手動創建WEB-INF目錄和web.xml文件,並更新web.xml為如下內容:
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"></web-app>
5. 接下來切換到Navigator視圖下,找到.settings目錄下的project facet的配置文件org.eclipse.wst.common.project.facet.core.xml,
將version更改為3.0然後更新項目 - <installed facet="jst.web" version="3.0"/>
6.最後更新maven項目,update project(Alt+F5)