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

Eclipse 使用Gradle+;时在Jetty上启用热部署的最佳方法;日食,eclipse,jetty,gradle,hotdeploy,gradle-eclipse,Eclipse,Jetty,Gradle,Hotdeploy,Gradle Eclipse,我已经习惯了mvn,但我正在为一个小型web开发项目测试Gradle(v1.8) 我注意到Jetty Gradle插件支持自动扫描和热部署,所以我启用了它。我的目标是从Eclipse重新编译,并在每次更改控制器时获得Jetty重新加载上下文,等等 但是,这是不起作用的,主要是因为Gradle编译输出转到build/,但是Gradle Eclipse插件创建了一个.classpath配置,将所有Eclipse输出定向到/bin(甚至混合测试和主源文件夹) 有办法吗?… 在单独的控制台上运行grad

我已经习惯了mvn,但我正在为一个小型web开发项目测试Gradle(v1.8)

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

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

有办法吗?…

  • 在单独的控制台上运行graddle jettyRun
  • 在Eclipse上保存修改过的类(触发编译)
  • 请确保Jetty接收更改并重新加载上下文
  • 根据我的研究,我已经确定了三个解决方法,但没有一个能解决上述问题(如果你有相关评论或更多建议,我将发布它们)

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

  • 所以您对微调热部署感兴趣,对吗

    请考虑使用GRITTY分级插件:

    它是一个高级gradle插件,用于在jetty上运行web应用程序。在热部署方面,它完全可以满足您的需要(甚至可能更多)


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

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

  • 将以下配置添加到您的
    build.gradle
    
    杰特伦{
    重载=“自动”
    扫描间隔秒=1
    }
    

  • 每次更改java代码后,运行以下任务:
    
    格拉德尔内贾瓦酒店
    

  • 由于jetty正在监视
    *.class
    文件,因此只有在
    *.class
    文件更改后,jetty才会重新热加载


    请参阅此链接:

    您的插件看起来很棒,谢谢。我还没有尝试过,但考虑到github中的文档质量和提交历史记录,我可以告诉您在这方面花费了相当多的时间;)