Maven + Tomcat 热部署

3

我在互联网上搜索了这个问题,并没有找到单一的解决方案。我们有一个使用配置文件来构建适合开发/测试/生产环境的 Maven 项目,使用 YUI 插件进行 JS 和 CSS 的压缩。它使用 Spring 进行依赖注入,Struts 作为 UI 框架,Ibatis 用作 ORM 映射器。我们在 Windows 上使用 Eclipse IDE,但由于需要部署到 Unix 服务器,因此不使用集成的 Eclipse。现在,我的问题是,是否有一种方法可以将此解决方案部署,以使对 JS、CSS、JSP、Spring applicationContext 文件、struts.xml、Ibatis 映射器文件以及 Java 代码的更改立即生效,而无需重新启动服务器。我记得 spring-groovy 插件支持重新加载 groovy 文件中的上下文变化。因此,我认为应该有一种支持热部署的方式。


有一个类似的问题,但它没有考虑Maven:https://dev59.com/questions/93NA5IYBdhLWcg3wWsUA - Jens Schauder
似乎是 http://stackoverflow.com/questions/3451481/java-maven-development-slow 的重复。 - Leif Gruenwoldt
4个回答

2
我发现Maven Tomcat插件很慢,因为它总是使用Tomcat的客户端部署程序,并通过管理器上的HTTP调用进行部署,如localhost:8080/manager/text。
Tomcat有一个由"autoDeploy"管理的Web应用程序重新加载机制,您可以在这里阅读有关它的信息。因此,既然每当应用程序WAR文件更改时它都会重新加载,我对我的maven-war-plugin进行了以下更改:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.3</version>
    <configuration>
        <outputDirectory>${my.tomcat.path}</outputDirectory>
    </configuration>
</plugin>

where

<properties>
    <my.tomcat.path>[MY TOMCAT WEBAPP PATH]</my.tomcat.path>
</properties>

之后我只需要执行 mvn compile war:war 或者 mvn compile package 即可。

1
你可以尝试使用maven tomcat插件,特别是tomcat:run目标。你也可以配置maven eclipse插件来创建一个动态Web项目,然后从eclipse中部署。

0

这听起来像是JRebel。(抱歉,有商业性质)。


JRebel,它支持Maven吗?我以为只有在从Eclipse运行时才能用。 - budsiya
JRebel不支持使用Maven的Tomcat插件。顺便说一句,如果您真的对此商业广告感到抱歉,那么您就不会发布它。 - JasperJ

0
Maven与Netbeans的集成可以为您完成此操作。只需文件->打开您的项目,点击运行(部署并生成用于测试的Web浏览器),然后在IDE中修改代码,每次单击保存时都会热部署更改。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接