如何在项目上进行更改并通过IDE运行它而不将其部署在服务器上

时间:2011-04-19 06:54:16

标签: java eclipse tomcat war

我想知道如何在代码中进行更改并直接从我的eclipse IDE在服务器上运行它,而不是每次都将我的项目转换为war文件并将其部署在服务器上。

我不希望看到我的更改只能通过将其转换为war文件并每次在服务器上部署它来反映..我可以在做出一些更改后直接通过我的eclipse IDE直接看到它们。< / p>

Plz帮助我,我不知道究竟要在谷歌搜索什么。所以寻求“SO”帮助。

提前致谢。

PS:对不起我的不好!!!我应该提供更多信息......我正在开发基于Spring Hibernate的项目......它只有java文件

5 个答案:

答案 0 :(得分:3)

您可以使用Eclipse-WTP插件来处理您的Web项目(http://www.eclipse.org/webtools)。使用此插件,您可以创建可以部署在指定(Tomcat)服务器上的“动态Web项目”。

如果您使用maven并且您的项目结构类似于maven-webapp(webapp-archetype),您还可以使用m2eclipse-plugin导入您的maven项目并在服务器上运行它。

答案 1 :(得分:2)

有很多不同的方法可以做到这一点,但这里有一种方法可能对你有用(很难说,因为你没有具体说明你的容器环境):

在新Java应用程序的main方法中:

  • 创建servlet容器的实例(例如Jetty或Tomcat)
  • 使用servlet容器的API调用
  • 注册应用程序的servlet
  • 为您的静态资源创建相关的URL映射
  • 启动HTTP服务器

然后,以调试模式运行此应用程序。你现在在Eclipse中运行了一个迷你环境。

答案 2 :(得分:2)

跟踪sjr的答案,wicket quickstart原型包含这样一个主类。这是:

  

<强> Start.java (HEAD)

没有关于它的wicket特定内容,它可用于运行任何Java webapp项目

将其复制到src / test / java并将其作为主类

执行

你的pom中需要以下依赖项:

<dependency>
    <groupId>org.eclipse.jetty.aggregate</groupId>
    <artifactId>jetty-all-server</artifactId>
    <version>7.3.0.v20110203</version>
    <scope>provided</scope>
</dependency>

答案 3 :(得分:0)

一切都无法动态反映

  • 您可以动态更改图片,javascript文件,css等文件。
  • 有些文件是在上下文初始化时被操作的,比如(web.xml,spring conf文件和其他一些conf文件)所以,你不能动态地改变它们但是你可以改变它们这些并重新启动服务器以查看效果。

  • 有些Servlet和Java代码需要编译,如果它们没有被类加载器加载,你可以动态更改它们(你不能100%肯定)

答案 4 :(得分:0)

您可以通过WTP eclipse插件使用HotSwap技术来查看已更改代码的效果,而无需将整个应用程序重新部署到应用程序服务器。这个link有一个教程,介绍如何使用WTP eclipse插件设置tomcat热部署。

但是这个HotSwap技术有很多局限性,例如,它只允许更改方法体,但不允许添加/删除类,字段,构造函数,方法,注释等。并修改XML文件和属性文件(例如web.xml,faces-config.xml)无法立即反映出来。

JRebel可以克服这些限制,但它不是免费的。它讨论了其他替代免费/开源的限制here