在Eclipse中运行多模块Maven Web应用程序

时间:2012-04-30 11:59:32

标签: java eclipse tomcat maven

我正在尝试在Eclipse中运行多模块Maven Web应用程序(EE Helios SR 1)。在NetBeans中,只需单击运行按钮即可。但在这里它可能有点复杂。

我已将Tomcat 7.0.26添加为项目war模块的服务器。当我尝试运行应用时,在窗口的Servers部分我看到Apache Tomcat v.7.0.26 at localhost [Started, Synchronized],但浏览器没有反应。系统浏览器是否需要在应用程序运行时显示页面?

当服务器启动时,我尝试移动到localhost:8080localhost:8080/welcome.html(第二个应该由应用处理),但我两次都遇到404错误。我也没有在apache-tomcat-7.0.26/webapps/中看到新文件夹。 Eclipse应该在运行应用程序时将项目放在那里吗?如果有人告诉我这里缺少什么,我真的很感激。

3 个答案:

答案 0 :(得分:1)

如果没有指定,默认情况下tomcat与eclipse部署的集成会转到.metadata中的特定文件夹,在我的情况下,例如:~/workspace/<my_project_workspace_name>/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/

然后将每场战争解压缩到一个文件夹中。如果你的maven pom.xml你会找到一个

<build>
    <finalName>myapp</finalName>
</build>

然后它将部署到tomcat:

localhost:8080/myapp/welcome.html

答案 1 :(得分:0)

Maven项目与具有Web应用程序构面的项目不同,您不能直接将Maven应用程序作为Web应用程序运行,因为文件夹结构不同。为了直接从eclipse运行您的应用程序,请尝试将Web应用程序性质添加到您的maven项目中[涉及修改.project和.classpath文件以及添加其他一些文件的复杂修改]。我建议相应地修改你的pom.xml文件

答案 2 :(得分:0)

我在Eclipse中运行Web服务器时遇到了很多不好的经历。大多数情况下,这与不可靠的类/资源重新加载有关。

我的解决方案是在新模块中将Jetty添加到我的应用中(请参阅Embedding Jetty)。这基本上将我的Web应用程序变成了Java应用程序,避免了大多数问题。它还允许我在应用程序重新加载时指定一个过滤器(用Java编写)。

这解决了类重新加载的所有问题(类和资源永远不会被复制到任何地方;它们是从Eclipse的bin文件夹加载的),启动速度要快得多(我们将启动时间从几分钟缩短到15秒)并且可靠。< / p>