私は、うまくスケーリングできるマルチモジュールのmavenプロジェクト(以下で説明)をセットアップしようとしています。主にSonatype の例から引き出されたアプローチについて、いくつか質問があります。
私はmavenマルチモジュールプロジェクトである程度の読書をしましたが、基本レベルを超える例を見つけることができませんでした.
質問:
- これ(以下)は、開始するのに適したプロジェクト構造ですか?それとも、最初から災難の匂いがしますか? つまり、ビルドをセットアップするときに大規模な再構築につながるのでしょうか? 要するに、私は Maven を使用して、穀物に反するものをセットアップすることを避けようとしています。
- 一部のモジュールは完全に独立していると予想していますが、ほとんどのモジュールは相互に関連しています。各モジュールを Git リポジトリとして開始し、後で緊密にリンクされたモジュールを一緒にリファクタリングしても問題ありませんか?
目的:
モジュラー Spring、JSF2、Maven ベースのプロジェクトに適したプロジェクト構造。これにより、選択したモジュールとその依存関係を含むビルドが可能になります。
Maven 構成 (jetty-maven-plugin など) を使用して、Tomcat/Jetty などの軽量コンテナーに個々の Web モジュールをデプロイできるはずです。これにより、Maven を介して必要な依存関係を取り込むことができるはずです。これにより、開発中に作業中のモジュールに集中し (完全なビルドとデプロイを実行する必要がなくなります)、完全なアプリケーションを完全なビルドでのみデプロイすることが容易になります。
セットアップでは、ビルドに含めるモジュールの選択に基づいて複数のディストリビューションを許可する必要があります。これは、対応するモジュールをプルしてパッケージ化するビルド モジュールを使用することで実現できると思います。
プロジェクトの構造
Core domain classes.
somapp.core (maven project)
|- someapp.core (maven module)
|- someapp.core.tests
Account Management Domain classes
someapp.accountmgmt
|- someapp.accountmgmt
|- someapp.accountmgmt.tests
component1 domain classes
someapp.component1
|- someapp.component1
|- someapp.component1.tests
Service 1 - # account management (User login)
someapp.accountmgmt
|- someapp.accountmgmt.api
|- someapp.accountmgmt.impl
|- someapp.accountmgmt.mocks
|- someapp.accountmgmt.tests
someapp.service2
|- someapp.service2.api
|- someapp.service2.impl
|- someapp.service2.mocks
|- someapp.service2.tests
|- someapp.service2.cli # CLI access for service2
someapp.service3
|- like above
someapp.accountmgmt.web
|- someapp.accountmgmt.web
someapp.service2.web
|- someapp.service2.web
someapp.service3.web
|- someapp.service3.web
someapp.build1 # bundle accountmgmt and service2 into 1 war file
someapp.build2 # bundle accountmgmt and service3 into 1 war file
somapp.build3 # bundle accountmgmt, service2 and service3 into 1 war file
(i.e. someapp.accountmgmt.web.war, someapp.accountmgmt.jar, someapp.service2.web.war, someapp.service2.jar, someapp.service3.web.war, someapp.service3.jar, someapp.core.jar)
プロジェクトの構造が決まっていないことは理解しています。良い出発点となるものを設定したいと思います。提案/例へのリンクは大歓迎です。