ブログ名

パッケージ構成について

パッケージ構成について

TERASOLUNAでは以下のマルチプロジェクトでのパッケージ構成を推奨しています。

プロジェクト一覧

No プロジェクト名称 レイヤー プロジェクトID 備考
1 親POM 環境 [projectName]-parent pom.xmlファイルだけを持ち、 その他のソースコードや設定ファイルは一切持ちません。その他のプロジェクトにてタグを指定することで親POMに指定された共通設定情報を反映することができます。
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定義ファイル

次の記事へ

前の記事へ 目次に戻る