從ASP.NET背景來看,我發現使用Eclipse WTP和Maven運行webapp需要花費多少工作,尤其是在您自己學習的情況下。希望這本快速入門指南能幫助別人快速起步。
有兩種方法可以使用Maven在Eclipse WTP中使用Hello World項目。您可以創建一個動態Web項目,然後添加Maven自然,或者您可以做相反的事情。
先決條件爲Eclipse與更新站點
啓動配置
選項1:創建動態Web項目再加入Maven的自然
創建新的Maven項目,選擇原型 org.apache.maven.archetypes :maven-archetype-webapp
更改爲Java EE透視圖。
創建一個新的源文件夾,src \ main \ java。注意Eclipse如何不夠智能爲您做這件事,並且文件夾的排序也不正確。 src \ main \ java文件夾在src \ main \ resources之後列出。這可以稍後在項目屬性中手動修復。
創建一個新的servlet。注意Eclipse如何將這個文件默認爲錯誤的文件夾src \ main \ resources,因爲順序是錯誤的。相反,請手動選擇src \ main \ java。 將嚮導的第二頁上的URL映射更改爲/ *以使測試更容易。
現在我們的servlet已經準備就緒,但servlet api的依賴關係沒有綁定。 A)我們可以將servlet api作爲依賴添加到我們的項目中,或者B)我們可以綁定到Apache 7.0的Eclipse服務器配置。
對於選項A,添加這種依賴到POM:
。
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-api</artifactId>
<version>7.0.${set this}</version>
<scope>provided</scope>
</dependency>
測試發佈:
。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().println("The time is now: " + new DateTime().toString());
}
重新加載測試頁,輸出,現在應該是:
現在時間是:2012-03-03T14:14:29.890-05:00
現在,如果你想使用Servlet 3.0和註釋這是默認情況下不啓用,爲什麼我不知道的原因。 首先強制Maven通過將這個添加到你的pom來使用Java 1.6,否則每次你更新你的pom時,配置都會恢復到Java 1.5。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
打開項目屬性 - >項目構面。將「動態Web模塊」下的版本更改爲3.0,更改java版本1.6
在src \ main \ java中創建一個類名爲AnnotatedServlet的新Servlet,並注意如何自動創建@WebServlet註釋。
選項2:創建動態Web項目再加入Maven的自然
- 選擇Tomcat的運行系統和動態模塊3.0版
- 創建源文件夾的src \主\ java中
- 設置默認輸出目標\類
- 設置上下文目錄src \ main \ webapp
- 檢查生成web.xml
- 創建映射/ *快速檢測
- 的servlet添加輸出語句doGet方法
response.getWriter().println("Another test");
。
<dependencies>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
謝謝你的提示,這是正確配置,但不工作。最終我發現從頭開始創建一個新項目的工作。在這種情況下,我創建了該項目,然後添加了Maven WTP連接器,但未正確配置該項目。 – dcompiled 2012-03-03 21:52:35
我有一點點不同的問題,但是這固定了它。我正在使用Maven構建其中包含SNAPSHOTS的項目。我最初啓用了Workspace Resolution,並將其關閉。 Eclipse被配置爲仍然使用本地項目,而不是來自我們的nexus回購的快照。我不斷收到中國國家農業科學院,發現這表明它仍然試圖解決它而不是發佈它的問題。 – bh5k 2012-10-03 16:46:55
這幫了我很多忙,在另一種情況下:)(類似) – Alex 2013-03-30 19:42:58