使用 Java 的猿們,最多接觸的大概就是 web 項目了吧?在學習 Maven 的過程中,首先當然就是創建一個 webapp 項目。
自己在嘗試的過程中,碰到了很多的問題。我把詳細的過程都記錄下來,以便今后參考。
使用 Maven 的 m2eclipse 插件創建 Java WebApp 工程的步驟:
如果未搭建好Maven開發環境,請參考前一篇:Maven學習筆記——環境搭建
一、新建工程項目:
打開 Eclipse, 菜單欄選擇 File -> new -> other,在彈出的對話框中找到 Maven Project.
在彈出的新建 Maven 項目對話框中,
不要勾選第一項 “Create a simple project”,如下圖所示,點擊 Next。

在列表中找到並選擇“maven-archetype-webapp”,點擊Next.如下圖所示:


填寫項目相關信息,Finish。

建好的工程結構如下圖:

可以看到,web資源文件的目錄為 arc/main/webapp
第二步:修改JRE版本。
項目生成后,JRE 版本默認為1.5 ,我們需要修改成更高版本的。
在項目的 POM.xml 文件中,加入如下配置:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.1</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> </build>
(也可以通過修改 settings.xml 全局配置以讓 Maven 默認設置特定版本的 JRE,具體方法這里先不寫了)
設置完后,選中項目右擊,彈出的菜單中選擇 Maven->Update Project .↓↓↓


更新之后,發現項目還存在錯誤。
在項目根目錄右擊彈出菜單,選擇 Build Path ->Configure Buile Path,進入項目的 Java build path 配置頁面:

所示錯誤如下圖,提示缺少(missing)兩個文件夾。但其實文件夾是存在的。


這時只要將 Libraries 標簽中的 JRE System Library 設置為本機默認的就可以解決該錯誤(不知道為什么會這樣)
如下圖,查看 Libraries 標簽↓↓↓


雙擊 JRE System Library 項,彈出 JRE 設置界面:↓↓↓


直接選 Workspace default JRE.
完成后,發現項目還有三個報錯,如下圖所示。別急,我們在接下來的步驟中一個一個解決。

第三步:添加服務器運行環境(Server Runtime)
項目中,index.jsp 顯示有錯誤,錯誤信息為:
The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
這時因為缺少了servlet-api、JSP-API、JSTL等包。
我們不需要一個一個把包導進來,因為 Tomcat 等 Servlet 容器都提供了這個包。在 Eclipse 中對項目設置一下運行環境就可以了。
切換到 Libraries 標簽,點擊“Add Library”按鈕。


在彈出的對話框中,選擇“Server Runtime”。


選擇 Tomcat 服務器。如果這里沒有服務器配置,請事先配置一個 Tomcat 等服務器。
(不知道如何配置服務器的話,就用搜索引擎搜一番)。


選中 Tomcat,點擊 Finish 后,看到工程已經不再有那兩個 Servlet 的報錯了。
第四步:Project Facet 配置
到這一步時,項目應該還有一處錯誤:
Java compiler level does not match the version of the installed java project facet.
如下圖所示:

我們需要通過修改 Project Facets 來解決這個錯誤。
打開項目的 Project Facet 置項,如下圖,將 Java 的版本設置為 1.7,確定。
如果這時已經時1.7了,則無需修改。
(也不是一定需要1.7,基本上和之前步驟配置的 JRE 版本一致即可)


現在應該不再報錯了。
但是我們還需要將 Project Facet 中的 Dynamic web module 的版本設置的更高一些。
如下圖所示,我將它設置為3.0版本。


這時可能會報如下的錯誤:
Cannot change version of project facet Dynamic Web Module to 3.0
我在網上找了好多信息,發現所有的解決方法完全沒有效果。
但是偶然的,我發現一個簡單的方法就能解決這個問題(不知道是通用的還是我自己環境中的特例)。
方法如下:
將 Dynamic Web Module 前的勾取消,點擊 Apply。然后再把勾給勾上,發現已經不報錯了。
第五步:運行
設置完畢,運行一下試試:
右擊項目 -> Run as -> Run on Server。


選擇一個服務器:
這時項目應該已經配置到服務器中了:


點擊 Finish,運行成功后打開鏈接:
http://localhost:8080/hello-maven-web/index.jsp
發現瀏覽器報404錯誤。
檢查項目的部署配置:


發現少了 webapp 這個目錄部署路徑。
點擊“Add”,彈出的對話框中選擇“folder”,選中 webapp 文件夾:


重新運行一次,終於看到 Hello World!

最后,我也不知道為什么,似乎很簡單的事情,會變得如此復雜。
