使用Spring启动对Intellij中的资产进行Livereload

Kas*_*par 6 java spring spring-mvc intellij-idea maven

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

现在,当使用Spring启动时,Make每次我在静态资产中更改某些内容时,我将不得不在IntelliJ中执行任务,否则我只是看不到浏览器中的更改.我的Spring Boot应用程序也使用devtools依赖项,我在浏览时将浏览器连接到实时重新加载套接字.

此配置仍未显示我在静态文件中所做的更改.为了让这个工作,我需要做什么?

Kir*_*ill 7

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

要实现此目的,请使用Gradle的以下设置:

bootRun {
    addResources = true
}
Run Code Online (Sandbox Code Playgroud)

对于Maven:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <fork>true</fork>
        <addResources>true</addResources>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)


Kas*_*par 1

看来问题出在我的静态资产的放置上。我必须将它们放入包webapp下的文件夹中main。之前我遵循 Spring.io 的指南,建议将静态资源放入resources包中。

现在我停止使用该resources包,一切都按我想要的方式进行。

  • 当使用 spring-boot 运行我的应用程序时,我还必须将静态文件放置在“resources”中。如果我将它们放在“webapp”目录中,它们将不会包含在我正在构建的 JAR 文件中。使用 spring-boot ,不再需要构建 WAR 文件,因此“resources”似乎是静态内容的首选位置。仅当我在 IntelliJ15 中创建项目(CMD+F9)时,LiveReload 才起作用。 (2认同)