Spring Boot + Jetty&热部署

时间:2014-04-30 20:33:22

标签: spring maven deployment jetty spring-boot

我已经阅读了Hot swapping in Spring Boot,但没有找到对我有帮助的内容。

我在使用thymeleaf的嵌入式码头服务器上有一个spring-boot应用程序。我的应用程序将提供html,css,js(AngularJS)和REST服务。

文件夹结构如下:

/java
   ----
/resources
   /static
       /js
       /css
   /templates (html)

的pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

但是当我更改它们时,css / html / js并没有热部署。我每次都要重启服务器。 + bonus =当页面加载时它会锁定资源(js),甚至Ant脚本也无法替换它们。

我可以在任何地方设置scanIntervalSeconds吗?

- 编辑 -

Main.java

@Configuration
@ComponentScan
@EnableJpaRepositories
@EnableAutoConfiguration
@Import({RepositoryRestMvcConfiguration.class, PersistenceConfig.class, ThymeleafConfig.class})
public class Main {

   public static void main(String[] args) throws Exception {
       SpringApplication.run(Main.class, args);
   }
}

我通过右键单击类和IDEA中的Debug来运行它。

3 个答案:

答案 0 :(得分:5)

你是如何推出该应用程序的?如果您使用具有调试模式的IDE,它应该可用(除了我认为是Windows操作系统的锁定问题),或者如果您使用&#34; mvn spring-boot:run&#34;或&#34;启动它。 gradle bootRun&#34;。

答案 1 :(得分:2)

我使用NetBeans 8.0.1开发。 我修复了src / main / resources中没有重新加载静态资源的问题,比如css(在src / main / resources / resources / css中(是的,真的是两次&#34;资源&#34;!),html-thymeleaf-templates(在src / main / resources / templates中,采用以下方式:

  • My Spring Boot webapp是一个JAR项目(pom.xml)
  • 添加src / main / resources / application.properties:
    • spring.template.cache =假
    • spring.thymeleaf.cache =假
  • 添加了自定义maven构建:项目 - 属性 - 自定义... - 目标......
  • 执行目标:spring-boot:run
  • 设置属性:
    • jpda.listen = maven(以调试模式运行)
    • Env.spring.profiles.active = DEV(可选,但我需要在开发,制作中使用不同的SpringConfig -....属性......)

只需运行自定义maven构建,即可在调试模式下启动webapp。 Thymeleaf-Templates中的更改(位于src / main / resources / templates中,例如index.html(不是.xhtml!))在浏览器重新加载时立即可见。

答案 2 :(得分:1)

如果将css和java脚本移动到下面的文件夹中 src / main / java / webapp它应该可以工作。

由于某些原因,src / main / java / resources下的资源在更改时似乎没有得到热部署。

要解决此问题,因为上面的帖子建议我添加了

  • spring.template.cache =假

  • spring.thymeleaf.cache =假 到资源文件夹中的Application.properties。

注意: 我还添加了这个

  • -javaagent:springloaded-1.2.0.RELEASE.jar -noverify

作为vm运行时参数。