Maven的tomcat:run mojo没有看到我的servlet

时间:2011-05-17 23:15:16

标签: web-applications tomcat maven

我有一个由Maven管理的简单WAR项目。我有src/main/java/*下的servlet代码和src/main/webapp下的所有静态内容(HTML,图像等)。我可以在我们的staging JBoss服务器上部署生成的WAR并且它可以工作,但是重新部署的往返非常缓慢。我希望能够在嵌入式Tomcat上本地测试更改,但我遇到了问题。

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 < / p>

ETA:我的设置看起来很像this guy,但我们的问题似乎有所不同。

1 个答案:

答案 0 :(得分:2)

比我想象的更简单:虽然POM设置为使用src/main/resources/web.xml,但这不是“正确”的地方。将它移动到src/main/webapp/META-INF会使servlet显示出来 - 当然,这导致了项目设置中的另外十几个错误,但这是另一天的故事。