Eclipse建立webapp3.0以上的Maven專案
建立專案
使用Eclipse建一個
File –> New –> Other
Next ,Next,選擇maven-archetype-webapp
輸入座標資訊,Finish
稍等片刻,我們的webapp骨架就構建好了。
專案依賴與設定
新建的專案會報錯,不過無關緊要,主要是我們的專案沒有執行環境,導致jsp無法編譯,錯誤具體原因
The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
解決方法有兩個
- 第一個就是為專案新增一個執行環境。
在工程上右鍵 –> Properties
在Targeted Runtimes中為專案新增一個執行環境就好了。
- 第二個是可以為專案加入servlet的依賴。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope >
</dependency>
任選一個就可以了。
補充
Maven的依賴範圍
Maven有三種classpath(編譯classpath、測試classpath和執行classpath)
相應的Maven有以下幾種依賴範圍
compile:編譯依賴範圍。如果沒有指定,就會預設使用該依賴範圍。使用此依賴範圍的Maven依賴,對於編譯,測試和執行三種classpath都有效。典型的例子就是spring-core。
test:測試依賴範圍。使用此依賴範圍的Maven依賴,只對於測試classpath有效,在編譯主程式碼或著執行專案時將無法使用次依賴。典型的例子就是Junit。
provided:已提供範圍依賴。使用此依賴範圍的Maven依賴,對於編譯和測試classpath有效,但在執行時無效,典型的例子就是servlet-api,編譯和測試專案的時候需要該依賴,但在執行專案的時候,由於容器已經提供,就不需要Maven重複引入了。
還有runtime和system,詳情參考許曉斌. Maven實戰[M]. 機械工業出版社, 2011.
這裡我採用第二種方法,配置一個provided的servlet-api依賴。
修改webapp版本
預設建立的webapp是2.3的。我們將其修改為3.1的。
第一步,將web.xml的頭資訊進行修改。
各個版本的頭資訊如下
2.3的頭資訊
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app id="WebApp_ID">
<display-name>2.3</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
3.0的頭資訊
<?xml version="1.0" encoding="UTF-8"?>
<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"
id="WebApp_ID" version="3.0">
</web-app>
3.1的頭資訊
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
</web-app>
第二步,修改org.eclipse.wst.common.project.facet.core.xml。
修改專案路徑下的.settings/org.eclipse.wst.common.project.facet.core.xml
將jst.web的版本改為自己想要版本,我改到了3.1
第三步,修改pom.xml。
在pom.xml的build標籤裡新增如下元素
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
然後工程,右鍵 –> Maven –> Update Project
工程右鍵 – > Properties
專案已經是web3.1和java1.7了。
關於為什麼我的專案直接是1.7的Java
因為我的使用者級的settings做了如下修改
<profile>
<id>jdk-1.7</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.7</jdk>
</activation>
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>
</properties>
</profile>
大概在settings.xml的200行左右。
Maven的配置參見
有時候我們的Maven會忘記給我們建立相應的資料夾。
我們依次建立相應的資料夾。
在 src/main下 New Folder即可。