我有一个有多个模块的项目:
Parent
\- Main
\- ServiceA
\- ServiceB
...在每个更改上执行maven install && maven exec:java所花费的时间正在使开发……很痛苦。被angular热部署搞坏了,我能说什么呢:)
有没有一种Java开发工作流-使用IDE、命令行构建工具或任何其他工具-允许热代码重新部署多段代码,而不需要付出捆绑的沉重代价?
Idk,也许我正在寻找OSGi的轻量级替代品(在安装和绑定时间方面都是如此)。由于IDE会自动重新编译代码,所以我想应该使用文件监视器加上类加载器。即使是完全重新启动JVM也可能是可以接受的(当然比maven的2分钟构建要好)。
我搜索了很多,但我遇到的所有解决方案都是重量级的。
发布于 2018-01-20 07:25:14
它依赖于服务器和框架。您可以尝试这里描述的解决方案:https://zeroturnaround.com/rebellabs/rjc301/,但我认为最好的解决方案是JRebel -不幸的是,它不是免费的工具
发布于 2018-01-20 07:22:01
据我所知,热交换并没有一个真正简单的答案。JVM重启似乎并不是真正的解决方案,因为这将需要类加载器重新加载类路径中的所有内容(远远超出了项目的范围,如果您为其他jars定义了额外的自定义类路径位置,情况可能会比正常情况更糟)。
有一个名为DCEVM的工具(我从未使用过),它作为JVM的补丁,允许在运行时重复重新加载类。
我相信您的选择是使用DCEVM或类似的(如果存在类似的)修补JVM,使用jdb (或其抽象,如IDE所做的)从命令行调试器工具重新加载类,或者编写一个带有钩子的辅助类加载器,您作为开发人员/用户可以在执行期间访问该钩子,以便让它知道何时转储其定义并获取新的定义。最后一个选项为您提供了最大的灵活性,但这不是一项轻松的工程任务。
https://stackoverflow.com/questions/48350790
复制相似问题