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

SpringBoot 在 IDEA 上怎么自动更新静态资源

  •  
  •   binbinyouliiii · 2017-07-20 17:13:13 +08:00 · 10212 次点击
    这是一个创建于 2465 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前没用过 springboot,今天试一试,发现更改静态文件后不会自动更新,必须得重启服务器才行。

    之前直接用 tomcat 和 jetty 的时候,用 war 包的形式,IDEA 的 Run/Debug Configuration 的窗口有 updata resouce 的选项,但是用 SpringBoot 就没有了,各位用 IDEA 开发的时候是怎么解决的。

    24 条回复    2019-03-22 20:04:46 +08:00
    Miy4mori
        1
    Miy4mori  
       2017-07-20 17:21:03 +08:00 via iPhone
    记得有个 livereload 之类的配置,写在配置文件里就行,前提是你没搞 webapps 这个幺蛾子目录。
    mosliu
        2
    mosliu  
       2017-07-20 17:22:17 +08:00
    spring-boot-devtools
    yuankui
        4
    yuankui  
       2017-07-20 17:22:34 +08:00
    官方有文档的
    mosliu
        5
    mosliu  
       2017-07-20 17:23:03 +08:00
    使用 spring-boot-devtools
    然后只要 build, 自动重启
    tr0uble
        6
    tr0uble  
       2017-07-20 17:25:46 +08:00
    Run -> Reload changed classes
    tr0uble
        7
    tr0uble  
       2017-07-20 17:30:53 +08:00
    CTRL + F OR Build -> Build Project 也会提示你更新,debug 模式
    tr0uble
        8
    tr0uble  
       2017-07-20 17:31:07 +08:00
    CTRL + F9
    zpf124
        9
    zpf124  
       2017-07-20 18:03:16 +08:00
    zpf124
        10
    zpf124  
       2017-07-20 18:03:34 +08:00
    眼瞎, 看错了
    bk201
        11
    bk201  
       2017-07-20 18:07:26 +08:00
    打开自动编译,引入 spring-boot-devtools
    haozhang
        12
    haozhang  
       2017-07-20 18:12:07 +08:00 via iPhone
    扔了,用 playframework
    tengj
        13
    tengj  
       2017-07-20 21:27:49 +08:00
    spring.thymeleaf.cache=false;
    把静态缓存去掉啦,或者用 spring-boot-devtools 这个热部署插件
    具体可以看这篇热部署文章:
    http://tengj.top/2017/06/01/springboot10
    Spring Boot 干货系列:(十)开发常用的热部署方式汇总
    fudanglp
        14
    fudanglp  
       2017-07-20 21:32:02 +08:00
    建议采用前后端分离姿势,前端采用 angular 或者 vue,用 webpack liveload,angular 可以参考 jhipster 生成的工程
    yzmm
        15
    yzmm  
       2017-07-20 21:50:43 +08:00
    除了可以加 devtools,还可以直接用 idea 配置 tomcat 热部署
    springmarker
        16
    springmarker  
       2017-07-21 00:51:25 +08:00
    @yuankui 这种方法早就试过了,没用
    @mosliu 设置了,没用
    @bk201 试过,没用
    @tengj 试过,没用
    @fudanglp 开发前端也得要 HTML 刷新啊,HTML 不刷新,就得重启服务器或者 CTRL+F9
    @yzmm springboot 并没有这个选项
    mosliu
        17
    mosliu  
       2017-07-21 09:30:17 +08:00
    现在就在这么用,没问题
    引入 spring-boot-devtools 然后 build 就会更新
    要不你 idea 版本问题?
    Niphor
        18
    Niphor  
       2017-07-21 09:49:31 +08:00
    也试了好多 只会用#6 楼的办法

    话说新版 idea 你们搜狗什么的输入法能用么?
    pythonee
        19
    pythonee  
       2017-07-22 19:47:50 +08:00
    @haozhang 现在这个玩意,还会一 build 就拉一堆依赖吗
    haozhang
        20
    haozhang  
       2017-07-22 19:59:41 +08:00 via iPhone
    @pythonee 哪个玩意运行不需要依赖呢....你可以下载离线包,不用第一次运行等很长时间的。
    bk201
        21
    bk201  
       2017-07-24 10:53:41 +08:00
    @springmarker 信了你的邪,这么多人可以,你不行,不如把环境以及操作发上来看看
    yzmm
        22
    yzmm  
       2017-07-27 16:37:28 +08:00
    @springmarker 修改 pom.xml:
    <packaging>war</packaging>
    然后再部署试试,如果还不行可以。利用 servler3.0 新特性动态加载,resources 目录下新建个 web.xml 然后配置:
    ```
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

    <listener>
    <listener-class>com.xxx.cloud.context.ContextLoaderListener</listener-class>
    </listener>
    </web-app>
    ```

    ContextLoaderListener.java
    ```
    package com.anbai.cloud.context;

    import com.anbai.cloud.config.CloudApplication;
    import org.springframework.boot.SpringApplication;

    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;
    import java.util.logging.Logger;

    /**
    * Cloud 启动监听器,利用 Servlet 3.x 动态创建 Spring 的 Servlet
    */
    public class ContextLoaderListener implements ServletContextListener {

    private static final Logger LOG = Logger.getLogger("info");

    @Override
    public void contextInitialized(ServletContextEvent sce) {
    System.setProperty("file.encoding", "UTF-8");
    SpringApplication.run(CloudApplication.class, null);
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
    LOG.info("Context " + sce.getServletContext() + " Destroyed...");
    }

    }
    ```
    jack80342
        23
    jack80342  
       2017-10-26 22:52:27 +08:00   ❤️ 1
    最近翻译了最新的 Spring boot 官方文档,欢迎反馈🙃,https://www.gitbook.com/book/jack80342/spring-boot/details
    shanlan
        24
    shanlan  
       2019-03-22 20:04:46 +08:00
    @jack80342 请问是怎么翻译的?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1612 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 16:47 · PVG 00:47 · LAX 09:47 · JFK 12:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.