我的项目有多个模块:
Parent
\- Main
\- ServiceA
\- ServiceB
...
每次改变maven install && maven exec:java
所花费的时间正在使开发......痛苦。被角度热部署宠坏了,我能说什么:)
是否有Java开发工作流程 - 使用IDE,命令行构建工具或任何类型 - 允许热代码重新部署多个代码而无需支付高昂的捆绑价格?
Idk,也许我正在寻找OSGi的轻量级替代品(无论是在设置还是捆绑时间方面)。由于IDE自行重新编译,我猜想要查找文件观察器和类加载器重新加载器。即使是完整的JVM重启也可能是可以接受的(当然比maven的2分钟构建更好)。
我搜索了很多,但我遇到的所有解决方案都是重量级的。
答案 0 :(得分:1)
这取决于服务器和框架。您可以尝试这里描述的解决方案:https://zeroturnaround.com/rebellabs/rjc301/但我认为最好的解决方案是JRebel - 不幸的是它不是免费工具
答案 1 :(得分:0)
根据我的知识热交换没有一个非常简单的答案。 JVM重启似乎不是真正的答案,因为这将要求类加载器在类路径中重新加载一切(远远超出项目范围,如果为其他jar定义其他自定义类路径位置,则可能比正常情况更糟糕) )。
有一个名为DCEVM的工具(我从未使用过),它充当JVM的补丁,允许在运行时重复加载类。
我相信你的选择是使用DCEVM或类似程序(如果存在类似的东西)修补JVM,使用jdb(或它的抽象,例如IDE做什么)从命令行调试工具重新加载类,或者写出来一个带有钩子的辅助类加载器,您作为开发人员/用户可以在执行期间访问它,让它知道何时转储它的定义并获取新定义。最后一个选项为您提供了最大的灵活性,但并不是一个轻松的工程任务。