使用 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)