パッケージ構成について
TERASOLUNAでは以下のマルチプロジェクトでのパッケージ構成を推奨しています。
プロジェクト一覧
No | プロジェクト名称 | レイヤー | プロジェクトID | 備考 |
---|---|---|---|---|
1 | 親POM | 環境 | [projectName]-parent | pom.xmlファイルだけを持ち、 その他のソースコードや設定ファイルは一切持ちません。その他のプロジェクトにて |
2 | DB初期化管理 | 環境 | [projectName]-initdb | テーブル定義(DDL)と初期データをINSERTするためのSQL文を格納します。ビルドライフサイクルの過程で任意のDBに対して、DDL文や初期データINSERT文の実行を自動化することができます。 |
3 | 設定ファイル管理 | 環境 | [projectName]-env | 環境依存性のある設定ファイルを格納します。例としては、ログ出力の設定ファイルやデータソースの設定ファイル等を格納します。 |
4 | 共通ライブラリ | 共通 | [projectName]-common | プロジェクト共通のライブラリを格納します。ここはweb非依存(domainプロジェクトでも利用可能)にし、webに依存するクラスはNo5に格納します。 |
5 | 共通webライブラリ | アプリケーション層 | [projectName]-common-web | プロジェクトweb共通のライブラリを格納します。例としては、webの共通クラスとしてJSPのタグクラスや、サーブレットに対してのフィルタークラスやインタセプタークラス等を格納します。 |
6 | アプリケーション | アプリケーション層 | [projectName]-web | アプリケーション層のjavaクラス、jsp、設定ファイルを格納します。複数のサブシステムがある場合は[projectName]-web-サブシステム名とし、webプロジェクトを複数作成することも可能です。 ※アプリケーション層のjavaクラスはアプリケーション構成について#2-アプリケーション層を参照。 |
7 | サービス | ドメイン層 | [projectName]-domain | ドメイン層のjavaクラスを格納します。No6のアプリケーション同様に複数のサブシステムがある場合は[projectName]-domain-サブシステム名とし、domainプロジェクトを複数作成することも可能です。 ※ドメイン層のjavaクラスはアプリケーション構成について#3-ドメイン層と アプリケーション構成について#4-インフラストラクチャ層を参照。 |
1 親POM
[projectName] └── pom.xml ... マルチプロジェクト全体の構成を定義するPOM
2 DB初期化管理
[projectName]-initdb ├── pom.xml ... initdbモジュールの構成を定義するPOM └── src └── main └── sqls ... データベース初期化を行うSQLを格納
3 設定ファイル管理
[projectName]-env ├── configs ... 設定ファイル管理のディレクトリ │ ├── production-server ... 環境毎:設定ファイルを格納 │ │ └── resources │ └── test-server ... 環境毎:設定ファイルを格納 │ └── resources ├── pom.xml ... envモジュールの構成を定義するPOM └── src └── main └── resources ... 開発用:設定ファイルを格納 ├── META-INF │ └── spring │ ├── artifactId-env.xml │ │ ... コンポーネントを定義するBeanファイル │ │ │ └── artifactId-infra.properties │ ... データソースの設定を定義するプロパティ │ ├── dozer.properties │ ... Dozerの設定を定義するプロパティ ├── log4jdbc.properties │ ... Log4jdbc-remixの設定を定義するプロパティ └── logback.xml ... Logback(ログ出力)を定義するBeanファイル
4 共通ライブラリ
[projectName]-common ├── pom.xml ... commonモジュールの構成を定義するPOM └── src └── main └── java └── 任意のパッケージ名 └── common ├── [部品名] ... 共通部品を格納 ├── annotation ... 共通アノテーションを格納 ├── util ... 共通Utilを格納※StringUtil等 ├── exception ... 共通例外を格納 ├── log ... 共通ロガーを格納 ├── constants ... 共通定数を格納 └── model ... 共通DTOを格納
5 共通webライブラリ
[projectName]-common-web ├── pom.xml ... commonモジュールの構成を定義するPOM └── src └── main └── java └── 任意のパッケージ名 └── common └── web ├── [部品名] ... 共通web部品を格納 ├── annotation ... 共通アノテーションを格納 ├── tags ... 共通タグを格納 ├── aop ... 共通アスペクトを格納 ├── filter ... 共通フィルターを格納 ├── interceptor ... 共通インタセプターを格納 ├── validation ... 共通バリデーションを格納 ├── base ... web規定クラスを格納 ├── constants ... 共通web定数を格納 └── model ... 共通DTOを格納
6 アプリケーション
[projectName]-web or [projectName]-web-[subsysName] ├── pom.xml ... webモジュールの構成を定義するPOM └── src └── main ├── java │ └── com │ └── example │ └── project │ └── app ... アプリケーション層クラスを格納 ├── resources │ ├── META-INF │ │ ├── dozer ... Dozerのマッピング定義ファイルを格納 │ │ └── spring ... Spring FrameworkのBean定義ファイルと │ │ プロパティファイルを格納 │ └── i18n ... メッセージ定義ファイルを格納 └── webapp ├── WEB-INF │ ├── tiles ... Tilesの設定ファイルを格納 │ ├── views ... テンプレートファイル(JSPなど)を格納 │ │ ├── common │ │ │ ├── error ... エラー画面のJSP及びHTMLを格納 │ │ │ └── include.jsp ... インクルード用の共通JSP │ │ └── layout ... Tilesのレイアウト用のJSPを格納 │ └── web.xml ... Webアプリケーション構成定義ファイル └── resources ... 静的なリソースファイルを格納 └── app └── css └── styles.css ... アプリ全体に適用する 画面スタイル定義(CSS)
7 サービス
[projectName]-domain or [projectName]-domain-[subsysName] ├── pom.xml ... commonモジュールの構成を定義するPOM └── main ├── java │ └── com │ └── example │ └── project │ └── domain ... ドメイン層のクラスを格納 │ ├── model ... DTOを格納 │ ├── repository ... リポジトリを格納 │ └── service ... サービスを格納 └── resources └── META-INF ├── dozer ... Dozerのマッピング定義ファイルを格納 └── spring ... Spring FrameworkのBean定義ファイルと │ プロパティファイルを格納 ├── artifactId-codelist.xml │ ... コードリストのBean定義ファイル ├── artifactId-domain.xml │ ... ドメイン層コンポーネントのBean定義ファイル └── artifactId-infra.xml ... インフラストラクチャ層コンポーネントのBean定義ファイル