【问题标题】:Livereload for assets in Intellij using Spring boot使用 Spring Boot 对 Intellij 中的资产进行 Livereload
【发布时间】:2016-03-10 08:23:14
【问题描述】:

在不使用 Spring 引导技术的情况下使用 Spring 时,我可以使用 Tomcat Maven 插件启动应用程序并更新我的 html、css 和 js,而无需重新启动服务器以使更改在浏览器中生效。

现在,当使用 Spring boot 执行此操作时,每次更改静态资产中的某些内容时,我都必须在 IntelliJ 中执行 Make 任务,否则我将看不到浏览器中的更改。我的 Spring Boot 应用程序也使用了 devtools 依赖项,并且在查看时我已将浏览器连接到实时重新加载套接字。

此配置仍然没有显示我在静态文件中所做的更改。我需要做些什么才能使其正常工作?

【问题讨论】:

    标签: java spring maven spring-mvc intellij-idea


    【解决方案1】:

    根据我的经验,如果您在没有war 插件的情况下构建jar,则webapp 目录中的静态资产不可用。所以我会避免使用这个目录。使用 Spring Boot,最好将 resources/static 文件夹用于静态资产。但是您希望它们在执行 Gradle 的 bootRun 目标或 Maven 的 spring-boot:run 时重新加载。

    要实现这一点,请使用以下 Gradle 设置:

    bootRun {
        addResources = true
    }
    

    对于 Maven:

    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <fork>true</fork>
            <addResources>true</addResources>
        </configuration>
    </plugin>
    

    【讨论】:

    • 我有你上面描述的那些设置,但仍然需要 CTRL-F9 并刷新浏览器才能加载对 html 的更改。为了避免 CTRL-F9 我可能还需要做些什么?
    • @AlGrant 按 CTRL+S 就足够了
    • 我遵循了这里的技术:stackoverflow.com/questions/43402551/… 请注意,我必须在注册表设置后重新启动 Intellij - 它现在会自动重新加载。
    【解决方案2】:

    问题似乎在于我的静态资产的放置。我不得不将它们放入main 包下的webapp 文件夹中。在此之前,我遵循 Spring.io 的指南,建议将静态资产放入 resources 包中。

    现在我停止使用 resources 包,一切都按我的意愿运行。

    【讨论】:

    • 很高兴您找到了解决方案。我觉得很奇怪,您在 resources 文件夹中有静态资源,但它仍然没有接受更改。我 99% 确定我在该文档中读到过它会......哦,好吧。
    • 我遇到了同样的问题。您是否也可以为您的 html 文件使用此功能?当我将它们移动到 src/main/webapp/[css|js] 时,这为我的 js/css 修复了它,但是当我将模板移动到 src/main/webapp/templates 时,我的控制器找不到模板。有什么帮助吗?
    • 使用 spring-boot 运行我的应用程序时,我还必须将静态文件放在 resources 中。如果我将它们放在webapp 目录中,它们将不会包含在我正在构建的 JAR 文件中。使用 spring-boot,不再需要构建 WAR 文件,因此看起来 resources 是静态内容的首选位置。 LiveReload 仅在我在 IntelliJ15 中创建项目 (CMD+F9) 时才有效。
    【解决方案3】:

    如果您关注当前的Spring Boot 1.3.0.RELEASE documentation,它似乎准确地描述了如何解决您遇到的问题。它还描述了一起使用 IntelliJ 和 Maven。

    所以也许检查一下,看看你是否首先遵循记录的路径?

    在遵循文档(在我链接的文档页面中列出)之前,您应该确保使用正确的 Maven 依赖项。

    【讨论】:

    • 该指南建议使用热插拔技术。但我对热交换 java 文件不感兴趣,因为我对重新加载静态资产感兴趣。该指南还没有提到根本不使用任何模板的用户。我所拥有的只是常规的 .html 文件。值得一提的是,我现在确实在 Maven 中定义了 springloaded 插件,它似乎没有任何区别。
    • 是的,很公平。我又看了看四周。你读过section 20.2 on Automatic Restarts,更具体地说是标题为触发更改的信息框。我使用 Eclipse,所以关于 IntelliJ 的这一部分可能对您更有意义。
    • exclusion of static resources (Section 20.2.1) 上还有另一个部分。它也可能会有所帮助。如果所有其他方法都失败了,我认为Watching Additional Paths 正下方的部分可能会解决您的问题。
    • 即使我遵循所有指南,我似乎仍然需要按 Ctrl + F9 才能看到更改。只是不确定我如何不必为主要使用 .jsp 文件和一些 javascript 的旧 Spring 项目执行此操作。那里都是自动的,我也将它与 Intellij 一起使用
    猜你喜欢
    • 1970-01-01
    • 2017-01-28
    • 2015-03-07
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    • 2019-03-14
    • 2017-07-25
    • 1970-01-01
    相关资源
    最近更新 更多