使用Gradle + Eclipse时在Jetty上启用热部署的最佳方法

时间:2013-11-01 17:13:30

标签: eclipse jetty gradle hotdeploy gradle-eclipse

我习惯了mvn,但我正在测试Gradle(v1.8)进行小型Web开发项目。

我注意到Jetty Gradle插件支持自动扫描和热部署,所以我启用了它。我的目标是从Eclipse重新编译并在每次更改Controller等时让Jetty重新加载上下文。

但是,这不起作用,主要是因为Gradle编译输出转到 build / ,但是Gradle Eclipse插件创建了一个.classpath配置,它将所有Eclipse输出定向到 / bin < / strong>(甚至混合测试和主要源文件夹)。

有办法吗?...

  1. 在单独的控制台上运行graddle jettyRun。
  2. 在Eclipse上保存修改后的类(触发编译)
  3. 看到Jetty接收更改并重新加载上下文。
  4. 根据我的研究,我已经确定了三个解决方法,但没有一个解决了上述问题(如果您有相关评论或更多建议,我会张贴它们)

    1. 调整Gradle Eclipse配置,将测试和主构建输出定向到Gradle使用的同一目录(使用看到的模式here)。某些人不建议这样做,因为这意味着使用两个可能相互干扰的不同编译系统。
    2. 使用Gradle eclipse-wtp插件生成WTP2配置,并使用Eclipse的“Run AS - &gt; Run on Server”。这实现了热部署/迭代目标,并使两个系统(IDE和Gradle)保持隔离。但是,您需要在Eclipse上设置服务器。
    3. (不是真正的解决方法):我已经测试了Spring的Eclipse构建(STS)Gradle集成,但似乎集成主要集中在项目设置上,而Gradle构建可以自动触发,Eclipse编译仍然被重定向到bin /.

2 个答案:

答案 0 :(得分:3)

所以你对微调热部署很感兴趣,对吧?

请考虑使用Gretty gradle插件:https://github.com/akhikhl/gretty

这是一个在jetty上运行web-apps的高级gradle插件。对于热部署(甚至可能更多),它完全符合您的要求。

披露:我是Gretty插件的作者。

答案 1 :(得分:0)

如果您不想更改为其他插件,则解决方法有以下两个步骤:

  1. 将以下配置添加到build.gradle jettyRun { reload = "automatic" scanIntervalSeconds = 1 }

  2. 每次更改java代码后,运行以下任务: gradle compileJava

  3. 因为jetty正在观看*.class个文件,所以只有在*.class个文件发生变化后才会重新加载。

    请参阅此链接:https://discuss.gradle.org/t/hot-deploy-with-jetty-plugins-jettyrun/7416