使用 Maven 和 NetBeans 在 Tomcat 上进行增量热部署

Posted

技术标签:

【中文标题】使用 Maven 和 NetBeans 在 Tomcat 上进行增量热部署【英文标题】:Incremental hot deployment on Tomcat with Maven and NetBeans 【发布时间】:2011-02-14 23:02:32 【问题描述】:

我正在使用 NetBeans 6.8、Tomcat 6 和 Maven 2.2,并希望在保存文件后立即在浏览器中查看我的代码更改(显示 http://localhost:8080)。

tomcat-maven-plugin有如下配置:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>tomcat-maven-plugin</artifactId>
  <version>1.0-beta-1</version>
</plugin>

根据输出,它应该执行就地部署。

如何在浏览器中立即查看 Java 代码的更改?

【问题讨论】:

【参考方案1】:

我花了很多时间试图完成这项工作。最后我只使用了码头。我把这个:

   <plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>$jetty.version</version>
            <configuration>
                <reload>automatic</reload>
                <scanIntervalSeconds>5</scanIntervalSeconds>
            </configuration>
   </plugin>

也许所有参数都不正确,但后来我创建了一个自定义目标“jetty:run” 我用那个。我无法使用绿色的大播放按钮“运行”,但码头部署运行良好,它可以热部署 Java 类中的任何更改。

【讨论】:

【参考方案2】:

看看JRebel。它应该做你想做的事。无痛。

【讨论】:

【参考方案3】:

看看Hot Deployment of a Web Application with Maven in NetBeans。我还建议查看Glassfish Hot Code Re-deployment (on Maven),尤其是关于保存时编译的帖子,并尝试使用 GlassFish,您可能会得到更好的结果。

【讨论】:

我在 GlassFish 上有同样的行为。唯一发生的事情是我在 GlassFish 试用后无法在项目设置中选择“Tomcat”:-(【参考方案4】:

使用 tomcat:inplace 目标从其编译的类和源调用您的 web 应用。

您可能会在 Windows 上遇到文件锁定问题。有几个workarounds,例如antiJarLocking contet 属性,但基本上这归结为您的webapp 没有正确关闭,在几次重新加载后最终会耗尽您的VM 内存。就我而言,我使用的是 Spring,“正确”的修复方法是在一些关键 bean 上添加一个销毁方法,以便应用程序正常关闭。

Maven Tomcat Plugin - tomcat:inplace

【讨论】:

以上是关于使用 Maven 和 NetBeans 在 Tomcat 上进行增量热部署的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Netbeans 11 中使用 Maven 和 Inno Setup 为 JavaFX 应用程序创建可执行安装程序

Netbeans 使用 pom.xml (Maven) 而不是 build.gradle (Gradle)

将 maven 项目导入 netbeans

在 NetBeans 中运行 Maven 目标的按钮

如何在 NetBeans Maven 项目中分析 JUnit 测试?

在基于 NetBeans Maven 的项目中,在编程和编译时包含一个库,但从构建中排除