2011-05-17 41 views
2

我有一個由Maven管理的簡單WAR項目。我有src/main/java/*下的servlet代碼和src/main/webapp下的所有靜態內容(HTML,圖像等)。我可以在我們的暫存JBoss服務器上部署最終的WAR,並且它可以工作,但重新部署的往返速度卻非常緩慢。我希望能夠在嵌入式Tomcat本地測試更改,但我遇到了問題。Maven的tomcat:運行mojo沒有看到我的servlet

servlet映射設置在src/main/resources/web.xml - 我認爲這是正確的;相關的部分看起來像

<servlet> 
    <servlet-name>myServ</servlet-name> 
    <servlet-class>my.pkg.MyServ</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>myServ</servlet-name> 
    <url-pattern>/ms</url-pattern> 
</servlet-mapping> 

Maven的告訴我它運行在localhost:8080/myprojectname,而事實上,當我去那裏,我可以看到的靜態內容。然而,我試過localhost:8080/myprojectname/ms以及localhost:8080/ms--前者給了我404,後者是0字節的響應。

總之:我的活動內容在哪裏?我在控制檯上看不到任何東西。它看起來像Maven做了一個target/tomcat/logs但這是空的。 target/tomcat/webapps也是空的,當我運行mvn tomcat:run -X時,我得到了很多調試輸出,包括對我所有JAR依賴項的引用,classesDir屬性指向target/classes(這是正確的),但沒有提到我設置的那個URL模式的任何地方,也不需要作爲處理程序調用的Servlet類的名稱。我覺得我應該告訴Maven或Tomcat如何找到web.xml,或者以另一種方式指定URL映射....如果你不能說,我是新的:D

ETA:我的設置看起來非常像this guy,儘管我們的問題看起來有所不同。

+0

是的,我面臨同樣的問題。 Glassfish 4看到了servlet,而tomcat 8看不到。 – Benas 2017-04-24 09:59:55

回答

2

比我想象的要簡單:雖然POM設置爲使用src/main/resources/web.xml,但這不是「正確」的地方。將它移動到src/main/webapp/META-INF使得servlet顯示出來 - 當然這在項目設置中導致了另外十多個錯誤,但這是另一個故事。