1

現在、作業中のプロジェクトのプロジェクト構造を定義しています。このプロジェクトは単純なSOA実装であるため、grailsアプリとさまざまなサービスがあります。

これらのサービスを個別のモジュール(jar)にパッケージ化して、個別に簡単にデプロイでき、クラスのコスト汚染のリスクがないようにしたかったのです。

プロジェクトの構造と依存関係は、次のように視覚化できます。

Grails App (war)
|__ Service Gateway (jar)
    |__Service A (jar)
    |__Service B (jar)

これらのサービスは最終的には別々にデプロイされますが、ローカル開発を容易にするために、それらを分解する必要があるときまで、単一のgrailsアプリにパッケージ化したいと思います。

私の最終的な目標は、単純なgrailsアプリと同じ方法でこれらのサービスを開発できるようにすることでした。つまり、任意のクラス(任意のモジュール内)をその場で変更して取得できるようにすることでした。

私は、IntelliJでこの構造を表現するための最良の方法を見つけるのに苦労しています。

上記のそれぞれに個別のモジュールを作成し、それらの間に依存関係を追加しましたが、明らかに、grailsは実行時にこれを認識していません。

私は以下の可能な解決策について読み、見つけました。これらはすべて、クラスをその場でリロードできないことを意味するjarを構築する必要があるため、現在少し不十分だと感じています。

  1. モジュールをローカルのMavenリポジトリにインストールし、Grailsビルドの依存関係でこれを参照します。
  2. ビルドされたjarをlibディレクトリにドロップします。
  3. それらをgrailsプラグインとして追加します(grails機能を必要としないため、少し手間がかかるようです)。
  4. これらのモジュールの出力ディレクトリをgrailsクラスパスに含める他の方法を見つけてください(これを行う最もクリーンな方法はわかりません)。

ありがとう!

4

1 に答える 1

0

結局、私はマルチモジュールのMavenビルドを使用しました。オンザフライのコードデプロイメントの鍵は、JRebelを使用して出力ディレクトリを監視し、クラスが変更されたときにクラスをリロードすることです。

于 2012-10-29T19:48:54.200 に答える