2013-11-01 26 views
2

我習慣於使用mvn,但我正在測試Gradle(v1.8)的一個小型Web開發項目。使用Gradle + Eclipse在Jetty上啓用熱部署的最佳方式

我注意到,Jetty Gradle插件支持自動掃描和熱部署,所以我啓用了它。我的目標是從Eclipse來重新編譯,並得到一個碼頭重載情況下我每次更改控制器時間等

然而,這是不工作,主要是因爲搖籃編譯輸出爲編譯/,但是Eclipse的搖籃插件創建一個.classpath配置,該配置將所有Eclipse輸出指向/bin(即使混合測試和主源文件夾)。

有沒有辦法?......一個單獨的控制檯上

  1. 運行graddle jettyRun。
  2. 在Eclipse上保存修改後的類(觸發編譯)
  3. 請參閱Jetty選擇更改並重新加載上下文。

按我的研究,我已經確定了三種解決方法,但它們都沒有解決上面的問題(我張貼他們如果你有相關的意見或建議,更多)

  1. 調整搖籃Eclipse配置將測試和主生成輸出指向Gradle使用的相同目錄(使用看到的模式here)。這不是一些人推薦的,因爲它意味着使用兩種不同的編譯系統,可能會相互干擾。
  2. 使用Gradle eclipse-wtp插件生成WTP2配置,並使用Eclipse的「運行AS - >在服務器上運行」。這實現了熱部署/迭代目標,並保持了兩個系統(IDE和Gradle)的隔離。但是,您需要在Eclipse上設置服務器。我測試了Spring的Eclipse構建(STS)Gradle集成,但似乎集成集中在項目設置上,雖然Gradle構建可以自動觸發,但Eclipse編譯仍然是重定向的到bin /。

回答

3

所以你有興趣微調熱部署吧?

請考慮使用Gretty gradle這個插件:https://github.com/akhikhl/gretty

它是在碼頭上運行網絡應用程序的高級gradle這個插件。它完全符合你想要的,關於熱部署(甚至可能更多)。

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

+1

您的插件看起來不錯,謝謝。我還沒有嘗試過,但考慮到github中的文檔質量和提交歷史記錄,我可以告訴你花費相當多的時間在它上面;) – Sebastian

0

如果你不想更改爲其他插件,這裏有兩個步驟的解決方法:

  1. 添加下面的配置到您的build.gradle jettyRun { reload = "automatic" scanIntervalSeconds = 1 }

  2. 每次
  3. 你改變之後java代碼,運行以下任務: gradle compileJava

因爲碼頭正在觀看*.class文件,所以只有在更改了*.class文件之後,纔會重新加載文件。

請參閱此鏈接:https://discuss.gradle.org/t/hot-deploy-with-jetty-plugins-jettyrun/7416

相關問題