1. 程式人生 > >Eclipse建立webapp3.0以上的Maven專案

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重複引入了。
還有runtimesystem,詳情參考

許曉斌. 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即可。

這裡寫圖片描述

參考