Java热重新部署,无需捆绑进行开发

Java热重新部署,无需捆绑进行开发,java,Java,我有一个包含多个模块的项目: Parent \- Main \- ServiceA \- ServiceB ... 在每次更改中执行maven安装和&maven exec:java所需的时间使得开发。。。痛苦的被角度热部署破坏了,我能说什么:) 是否有一种Java开发工作流程——使用IDE、命令行构建工具或任何类似工具——允许热代码重新部署多段代码,而无需支付捆绑的沉重代价 Idk,也许我正在寻找OSGi的轻量级替代品(在安装和捆绑时间方面)。由于IDE自己重新编译东西,我想应该寻找文件监视程

我有一个包含多个模块的项目:

Parent
\- Main
\- ServiceA
\- ServiceB
...
在每次更改中执行
maven安装和&maven exec:java
所需的时间使得开发。。。痛苦的被角度热部署破坏了,我能说什么:)

是否有一种Java开发工作流程——使用IDE、命令行构建工具或任何类似工具——允许热代码重新部署多段代码,而无需支付捆绑的沉重代价

Idk,也许我正在寻找OSGi的轻量级替代品(在安装和捆绑时间方面)。由于IDE自己重新编译东西,我想应该寻找文件监视程序加类加载器重新加载程序。甚至完全重启JVM也可能是可以接受的(当然比maven的2分钟构建要好)


我搜索了很多,但我遇到的所有解决方案都是重量级的。

据我所知,热交换并没有一个真正简单的答案。JVM重启看起来并不是真正的答案,因为这需要类加载器重新加载类路径中的所有内容(远远超出了项目的范围,如果为其他JAR定义其他自定义类路径位置,情况可能会比正常情况更糟)

有一个名为DCEVM的工具(我从未使用过),它充当JVM的补丁,允许在运行时重复类重新加载


我相信您的选择是使用DCEVM或类似的(如果存在类似的)修补JVM,使用jdb(或其抽象,如IDE所做的)从命令行调试器工具重新加载类,或者编写一个带有钩子的二级类加载器,作为开发人员/用户,您可以在执行过程中访问该钩子,让它知道何时转储其定义并获取新的定义。最后一个选项为您提供了最大的灵活性,但这不是一项轻松的工程任务。

它取决于服务器和框架。您可以尝试这里描述的解决方案:但我认为最好的解决方案是JRebel——不幸的是,它不是免费工具