5

Maven をビルド システムとして使用して GWT 開発を始めたばかりです。

私は Java + Flex の世界から来たので、当然、クライアント側モジュールとサーバー側モジュールが明確に分離されています。

GWT のベスト プラクティスを掘り下げ、さらに深く掘り下げていくうちに、GWT プロジェクトのデフォルト構成は、ますます責任の混乱のように感じられます。特にマルチモジュール プロジェクトに関しては。

サーバー側のロジックは「サーバー」パッケージに属し、共有コードは「共有」に属し、GWT コンパイラーによって「クライアント」パッケージにコンパイルされたものは HTML+JavaScript に属するという慣習があることを理解しました。すべてのコードは src/main/java に移動します。ここまでは順調ですね。

どのように見ても...「クライアント」パッケージの内容は単にデッドコードです。Java コンパイラーがこれをクラスにコンパイルしたとしても、クラスは実行時に使用されることはなく、コンパイル段階で GWT コンパイラーに入力を提供するためにのみ必要です。したがって、Java のように見えても、実際には Java ではなく、Java のように見えるだけです。これらを「ライブ」コードと同じ jar 内に配置するのは、ちょっと汚いと感じます。

このような Maven 構造の方が理にかなっているでしょうか。

/src/
/src/main/
/src/main/java
/src/main/shared
/src/main/gwt

また、java-compiler-plugin に src/main/java と src/main/shared を使用させ、GWT コンパイラに src/main/gwt と src/main/shared を使用させるには?

また、ビルドが 2 種類のアーティファクトを生成する場合は、はるかに気分が良くなります... src/main/java および src/main/shared からのクラスを含む通常の「jar」と、クラスとソースを含む 2 番目の「gwt」 src/main/gwt および src/main/shared.

混乱した jar に依存関係を追加することはありませんが、GWT コンポーネントをインポートするか、サーバー側の機能をインポートするかを決定できます。

次に、GWT のデフォルトでは、xml、リソース、およびその他のものを src/main/java ... XML && Resources != Java に配置することです ;-)

それとも、私がまだ気付いていないという本当の理由があるのでしょうか... それとも、そのようなことを心配せずに、汚れ始めなければならないのでしょうか?

クリス

4

2 に答える 2

5

私は少し前に同じ結論に達し、開始に役立ついくつかのアーキタイプを作成しました: https://github.com/tbroyer/gwt-maven-archetypes (お知らせ)。

それらの原型にはまだ*.gwt.xml他があります。これはsrc/main/java、Eclipse 用の Google プラグインが他の場所に配置することをサポートしていなかったためです (最近のバージョンで修正されたと聞きましたが、まだ確認していません)。

于 2013-02-22T16:08:40.370 に答える
3

I have also tried to separate GWT client-side code from server-side code. The method I have used is to have a top-level project with 2 sub-projects, one for server-side, one for client-side. The top-level project has a pom.xml containing a element for each sub-project.

The client-side project contains GWT java source in src/main/java and the rest of the webapp files in src/main/webapp. The server-side project contains just the server-side code.

Probably not the tidiest solution but at least there's a clearer separation.

于 2013-02-22T11:40:18.123 に答える