V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
chengyiqun
V2EX  ›  程序员

关于 springboot 和非 springboot 跑在外部 tomcat 的 web 工程的 idea 里的断点问题.

  •  
  •   chengyiqun · 2021-12-17 15:57:33 +08:00 · 1149 次点击
    这是一个创建于 832 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我这里有几个 java 的 web 工程. maven 的

    这个工程是个老工程, 没用 springboot, 自然也没用 dev-tools 热部署 image1.png debug 时跑在外部的 tomcat 上.

    image3a7cefaf5e11c276.png

    这样勾上后, 启动调试会打开一个 chrome 浏览器, idea 里 js 文件里打的断点能进去.

    但是如果我刷新了, 或者浏览器关了, 这个断点就不生效, 必须重启 tomcat 等待 idea 自动唤醒浏览器, 不然断点没用. 就很麻烦.

    如果我这样, 直接对着 html 文件右键单击, 选择 debug, 也会打开同样的网址的 javascript 的 debug 模式 image4511c92a8b3acf25.png 但是同样的断点是没用的.

    还有个问题就是按 ctrl+F9 只会热部署 class, 不会部署静态文件. 必须手动重启 tomcat 或者选择重新部署才行. 浏览器缓存也要刷新(或者开着 F12,勾上禁用和缓存的设置) 我这边还有一个项目是跑在 springboot 上的, 加了 dev-tools, 发现 ctrl+F9 编译模块后, 静态文件也重新加载了. 就很方便. 在非 springboot 工程上怎么能达到类似的效果?

    tedzhou1221
        1
    tedzhou1221  
       2021-12-17 17:57:32 +08:00
    把图 2 中的 on 'Update' action 和 On frame deactivation 两个下拉框都选择为 update class and resources
    tedzhou1221
        2
    tedzhou1221  
       2021-12-17 17:59:55 +08:00
    还有就是,如果用 dev-tools ,还不如用 Jrebel 。如果你有特殊的自定义热加载的东西,Jrebel 有提供自定义接口给你去实现(由于我能力不够,所以没有实现)
    tedzhou1221
        3
    tedzhou1221  
       2021-12-17 18:01:04 +08:00
    如果使用的是 Mybatis 框架,可以去找找 mybatis-plus 的源码,他们有实现热更新 Mapper 的 xml 功能。
    chengyiqun
        4
    chengyiqun  
    OP
       2021-12-18 13:22:27 +08:00
    @tedzhou1221 ![image.png]( https://s2.loli.net/2021/12/18/oJtv8CYrHyaTPlI.png)
    只有 update class, 没有 update class and resources, 我不知道为什么.
    Jrebel 我也用过, mybatis-plus 用不到, 我主要不是为了热部署 class 和 xml, 而是 webapp 目录里的静态文件.

    最大的问题就是在 idea 里点了断点, 调试是不生效的.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1146 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 18:35 · PVG 02:35 · LAX 11:35 · JFK 14:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.