2

mvn には慣れていますが、小規模な Web 開発プロジェクトで Gradle (v1.8) をテストしています。

Jetty Gradle プラグインが自動スキャンとホット デプロイをサポートしていることに気付いたので、有効にしました。私の目標は、Eclipse から再コンパイルし、コントローラーなどを変更するたびに Jetty にコンテキストをリロードさせることです。

ただし、主に Gradle コンパイル出力がbuild/に送られるため、これは機能しませんが、Gradle Eclipse プラグインは、すべての Eclipse 出力を/binに送信する .classpath 構成を作成します(テスト フォルダーとメイン ソース フォルダーが混在していても)。

方法はありますか?...

  1. 別のコンソールで graddle jettyRun を実行します。
  2. 変更したクラスを Eclipse に保存する (コンパイルのトリガー)
  3. Jetty が変更を取得し、コンテキストをリロードすることを確認します。

私の調査によると、3 つの回避策を特定しましたが、上記の質問を解決するものはありません (関連するコメントやその他の推奨事項がある場合に備えて投稿しています)。

  1. Gradle Eclipse 構成を微調整して、テストとメイン ビルドの出力を、Gradle が使用する同じディレクトリに送信します (こちらのパターンを使用)。これは、互いに干渉する可能性のある 2 つの異なるコンパイル システムを使用することを意味するため、一部の人には推奨されません。
  2. Gradle eclipse-wtp プラグインを使用して WTP2 構成を生成し、Eclipse の「Run AS -> Run on Server」を使用します。これにより、ホット デプロイ / 反復の目標が達成され、両方のシステム (IDE と Gradle) が分離された状態に保たれます。ただし、Eclipse 上にサーバーをセットアップする必要があります。
  3. (実際には回避策ではありません): Spring の Eclipse ビルド (STS) Gradle 統合をテストしましたが、統合はプロジェクトのセットアップに重点を置いているようで、Gradle ビルドは自動的にトリガーできますが、Eclipse コンパイルはまだ bin/ にリダイレクトされます。 .
4

2 に答える 2

0

他のプラグインに変更したくない場合は、次の 2 つの手順で回避してください。

  1. 以下の構成を に追加しますbuild.gradle jettyRun { reload = "automatic" scanIntervalSeconds = 1 }

  2. Java コードを変更するたびに、次のタスクを実行します。 gradle compileJava

jetty はファイルを監視しているため、ファイルが変更された*.class後にのみホット リロードされます。*.class

このリンクを参照してください: https://discuss.gradle.org/t/hot-deploy-with-jetty-plugins-jettyrun/7416

于 2016-10-24T01:30:44.207 に答える