理想的な世界では、GWT アプリを JavaScript にコンパイルし、それを静的リソースとして提供し、バックエンド コードを JVM で実行する舞台裏で、うまくいきます。しかし、その理想的な世界は、実行時のプロダクションと呼ばれます。
ただし、開発時に gwt コード サーバーを利用したい場合は...
GWTモジュールのデバッグと再コンパイルの目的で、実行時(ソース+クラス)にGWTコンパイル時の依存関係が必要です。
同時に、spring-boot 1.3.5.RELEASE などでバックエンドをサポートしたい場合があります。
この場合、複数の頻繁なリリースに苦しんでいるスプリング ブートは、この時点で管理された依存関係として追加したいと考えています。たとえば、次のようになります。
<hibernate-validator.version>5.2.4.Final</hibernate-validator.version>
もちろん、これは非常に良いことです。実際、これは春の多くの良い特徴の 1 つです。
一方、Gwt については、次のリンクを参照して ください。 http://www.gwtproject.org/doc/latest/DevGuideValidation.html
はまだ使用する必要があります:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.1.0.Final</version>
<scope>runtime</scope>
</dependency>
さて、もしあなたがこう言うなら: 私は生産的な開発には関心がないので、生産環境で適切に動作するものをコンパイルしてください。
実際、次のような方法でプロジェクトを構成することで、上記の問題を自明に解決できます。
ROOT
--- Backend-api
--- Backend-Impl
--- Gwt-Front-end
---- War or stand alone Spring jar module to glue it all together
一部の RPC サービスと DTO について、Gwt-Front エンドをバックエンド API に依存させる場所。pom.xml の依存関係は、ほとんどの場合、バックエンドにある依存関係とは関係なく、フロントエンド モジュールでのみ管理できます。最終的には、gwt コードを静的リソースとして保持し、バックエンド コードとそのすべての依存関係 (Hirbernate バリデーターの最新バージョン) を保持する war、またはスプリング ブートで実行可能な jar を作成します。
ただし、開発目的で機能するpomを取得しようとしている場合、私が見る限り、ROOTのバックエンドレイヤーとフロントエンドレイヤーの間で共通する依存関係をグローバルに管理する必要がありますpom.xml、および依存関係を gwt で必要なバージョンにダウングレードします。
つまり、理想的な世界のシナリオです。ROOT pom.xml は、モジュールとビルド順序を宣言するだけです。そして、back-end-impl に、spring-boot-starter pom.xml などから依存関係を継承したいことを述べる力を持たせます...
理想的なシナリオとは対照的に、開発時に実際に役立つ pom.xml 構成では...まあ、ルートの pom.xml を再検討する必要があるかもしれません。そして、このルート pom.xml に管理された依存関係を追加する必要があるため、GWT フロントエンドとスプリング ブート バックエンドの間で競合する一般的なすべての依存関係について、常に GWT のバージョンを変更してダウングレードする必要があります。所定の位置に。
これにより、gwt:run、dev モードの再コンパイルなどを実行するときに、gwt コンパイラーが Hibernate バージョン 5 を JavaScript でコンパイルしようとするのではなく、GWT 4.1 final で実際にサポートされているバージョンをコンパイルすることが保証されます。もちろん、バックエンド コードに驚きをもたらすかもしれません。最近では、このようなハックを配置することで...
バックエンドとgwtベースのフロントエンドが競合する依存関係の要件を持つことができるマルチモジュールプロジェクトを適切に編成する方法を知っている人はいますか?
最終的に、答えが「いいえ」の場合、私は、純粋な gwt スタンドアローン桟橋と統合する純粋なスタンドアローン スプリング ブート バックエンドを持つことによって、ネットワークの浪費と通信遅延の追加を好むと思います。実際のスプリングブートバックエンドへのリクエストをばかげてキックするだけです。UI によって 1+1 を実行するために呼び出され、実際に 1+1 の実行方法を知っている sprin boot を実行している 2 番目のバックエンドに計算を転送する gwt jetty バックエンドを持つのは、ちょっと哀れです...しかし、これが最も生産的な作業方法であり、開発が生産的であり、生産が予期せずに実行されることを保証する場合は、そうしてください.
フィードバックをお寄せいただきありがとうございます。理想的には、既存の Maven プロジェクトとして Eclipse にインポートできる multi-pom プロジェクトを見て、これを実現する方法を示したいと思います。