3

コンテクスト

  • マルチMavenモジュールまたはシングルMavenモジュール構造の大きなプロジェクト

質問

  • 最終的にmulti-maven-moduleまたはsingle-maven-module構造を使用しましたか?

詳細

開発期間が長く、多くの機能を含む大きなプロジェクト(つまり、些細なプロジェクトではない)に取り組んだ場合、プロジェクトを複数のMavenモジュールに分割することを選択しましたか、それとも単一モジュールのアプローチを採用しましたか?

たとえば、マルチモジュール構造の場合、mvn gwt:eclipseなどのmavenコマンドを実行するとクラッシュします(http://bit.ly/gs4Rmoを参照)。これは、単一モジュールのGWTプロジェクトでうまく機能したと思います。また、マルチモジュール構造に問題がある上記のような他のコマンドが存在する可能性があります。

ただし、マルチモジュール構造は、開発の高速化のメリットをもたらす可能性があります。つまり、「サーバー」を「クライアント」モジュールから分離すると、ビジネスロジック(サーバー)を個別にコンパイルして、結果のWebアーカイブにパッケージ化できます。GWTコードのコンパイルには約20秒かかるため、サーバーパッケージのみを変更すると、長期的には多くの時間を節約できます。

マルチモジュール/シングルモジュールプロジェクトで作業しているときに、上記のような他のどのケースに遭遇しましたか?

ありがとうございました!

4

2 に答える 2

6

A few notes:

  1. On development server you don't have to compile the code "by hand": dev server compiles the code automatically and reloads it. Just keep dev server running, change some code and then reload the page in browser. (this is only true if you change existing classes and don't change project structure)

  2. Multiple maven modules have nothing to do with multiple GWT modules.

  3. You would want to have multiple GWT modules (= multiple entry points) if you have code that executes in different environments: for example you have web and mobile sites that have quite different code bases. Then you would split the project into three modules: web, mobile and common. Then you'd reference common in both web and mobile.

  4. Another case for multiple GWT modules would be if you, for some reason, want to have a multiple host (entry) HTML pages. There are rare cases when you'd want this, for example when you need to do redirects when integrating OpenID. The other case would be that you already have existing Web pages where you are only adding GWT to add some functionality.

  5. Don't split the GWT project into multiple modules just to reduce download size: use Code Splitting instead.

  6. If your main gripe is long gwt compile times then read: How do I speed up the gwt compiler?

于 2011-02-23T14:21:09.700 に答える
1

複数のモジュールから始めて、最終的に1つのモジュールに統合しました。これの主な理由は、モジュールのメンテナンスが大きなオーバーヘッドであるということでした。各モジュールには、UI、RPCレイヤー、およびバックエンドサービスを構築するためのpomがありました。したがって、30個のモジュールを使用して、90個のMavenプロジェクトを管理する必要がありました。

モジュールをマージすると、90個のMavenプロジェクトが1つの親レベルのpomで3つになりました。

これにより、メンテナンスのオーバーヘッドが大幅に削減され、ビルド時間が改善されます。GWTのコンパイラは非常に遅いことで有名なので、ソースファイルを複数回ではなく1回コンパイルするだけで、処理が大幅に高速化されます。

反対に、単一のモジュールは、コンパイラがすべてを一度にメモリに丸呑みすることを意味します。これにより、コードにスプリットポイントを挿入した場合、スプリットポイントの検出が非常に遅くなる可能性があります。したがって、分割する場合は、それらのポイントをどこに置くかを検討し、それに応じてプロジェクトを調整することをお勧めします。

于 2011-02-23T17:32:20.817 に答える