4.0
Gradle Plugin

1. Gradle Plugin について

iPLAssのデフォルト設定では各種メタデータはRDBで管理されます。
RDBで管理する場合、バージョン管理による履歴は残りますが、各バージョン間の差異等は分かりません。
そのため複数の開発者で更新を繰り返すと、変更点が分かりにくくなるというデメリットがあります。

そこで、メタデータをファイル(XML形式)管理へ変更し、メタデータファイルをバージョン管理システム(Git/SVN等)で管理します。
バージョン管理システムを利用することで、メタデータのファイル単位の変更内容を管理することが可能となり、デメリットを解消できます。

iPLAssにはメタデータをXMLファイルとして出力する機能があります。
このXMLファイルを管理可能な形でローカルプロジェクトに取り込むツールとして、Gradle Plugin を提供しています。

Gradle Plugin はメタデータのファイル管理機能の他に、開発時に利用する機能を提供します。

2. 利用設定

Gradle Plugin を利用するために、次の設定が必要です。

2.1. build.gradle の設定

プロジェクトの build.gradle に plugin を設定します。

Plugin の最低限の設定
plugins {
    id 'org.iplass.dev' version '1.0.0'
}

configure(iplass) {
    tenantId = TENANT_ID // 利用しているテナントIDを設定する
}

その他の設定詳細は、Github iplass gradle plugin の README を参照ください。

2.2. service-config の設定

service-config の MetaDataRepository のプロパティ設定が必要となります。以下に設定例を示します。
CompositeMetaDataStore の store プロパティには XmlFileMetaDataStore を設定してください。

設定例
<!-- MetaDataRepository Settings -->
<service>
  <interface>org.iplass.mtp.impl.metadata.MetaDataRepository</interface> (1)

  <property name="tenantLocalStore" class="org.iplass.mtp.impl.metadata.composite.CompositeMetaDataStore" > (2)
    <property name="pathMapping" class="org.iplass.mtp.impl.metadata.composite.MetaDataStorePathMapping">
        <property name="pathPrefix" value="/entity/"/>
        <property name="store" value="org.iplass.mtp.impl.metadata.rdb.RdbMetaDataStore"/>
    </property>
    <property name="pathMapping" class="org.iplass.mtp.impl.metadata.composite.MetaDataStorePathMapping">
        <property name="pathPrefix" value="/staticresource/"/>
        <property name="store" value="org.iplass.mtp.impl.metadata.rdb.RdbMetaDataStore"/>
    </property>

    <property name="store" class="org.iplass.mtp.impl.metadata.rdb.RdbMetaDataStore" />
    <property name="store" class="org.iplass.mtp.impl.metadata.xmlfile.XmlFileMetaDataStore" > (3)
      <property name="fileStorePath" value="src/main/tenantLocalStore/" /> (4)
      <property name="groovySourceStorePath" value="src/main/groovy/" />
      <property name="localTenantId" value="CHANGE_YOUR_TENANT_ID"/> (5)
    </property>
    <property name="defaultStoreClass" value="org.iplass.mtp.impl.metadata.xmlfile.XmlFileMetaDataStore"/>
  </property>
</service>
1 設定の詳細については MetaDataRepository の設定を参照。
2 tenantLocalStore プロパティは、 org.iplass.mtp.impl.metadata.composite.CompositeMetaDataStore を設定する。
3 org.iplass.mtp.impl.metadata.composite.CompositeMetaDataStore のプロパティ store に以下のファイル管理用のMetaDataStoreを設定する。
   org.iplass.mtp.impl.metadata.xmlfile.XmlFileMetaDataStore(開発時の利用用途。メタデータの修正差分を git 等で管理することを想定。)
   org.iplass.mtp.impl.metadata.xmlfile.VersioningXmlFileMetaDataStore(RdbMetaDataStore の完全なるファイルベースの代替)
4 XMLファイルは fileStorePath プロパティのパスに出力される。
value 属性値に相対パスを設定する場合は、Eclipse の Tomcat 起動構成の引数タブで、作業ディレクトリをプロジェクトのルートディレクトリに設定する。
作業ディレクトリを設定することで、ウェブアプリケーション(Tomcat)の実行時にメタデータを参照することができる。
5 バッチ実行時に指定することができるテナントIDは、localTenantId に設定されているテナントIDと同一であること。
※当該行の value 属性は利用対象のテナントIDを設定する。

3. メタデータ管理

3.1. RDBメタデータをファイルメタデータへ変換

以下のコマンドで開発用のテナント(RDB)からローカルのプロジェクト内にメタデータを移行します。

タスク実行

ファイルメタデータへ変換するGradleタスクを実行します。

Gradleタスク実行コマンド
.\gradlew.bat :metaConvertRdbToFile

タスクが完了すると、XmlFileMetaDataRepositoryのfileStorePathで指定したディレクトリに種類毎に分割されたメタデータファイルが格納されます。

3.2. RDB管理メタデータを最新化

Entity等のRDB管理しているメタデータを、以下の操作で最新化します。

build.gradle の設定

プロジェクトの build.gradle ファイルに、RDB管理しているメタデータのパスを設定します。

RDB管理メタデータパスの設定例
// entity メタデータ、staticresource メタデータを対象とする設定
metaSyncRdbToFile {
    source = ['/entity/*', '/staticresource/*']
}

タスク実行

メタデータの最新化タスクを実行します。

Gradleタスク実行コマンド
.\gradlew.bat :metaSyncRdbToFile

タスクが完了すると、XmlFileMetaDataRepositoryのfileStorePathで指定したディレクトリに build.gradle で設定したパスに一致するメタデータファイルが更新されます。

3.3. バージョン管理システムの利用

Git/SVN等のバージョン管理システムを利用することで、メタデータの変更を管理できるようになります。
競合や差分が発生した場合、変更内容を確認しマージ/コミット等を行ってください。

4. 開発時に利用する機能

4.1. Entity View DDL 作成

バッチツール Entity View を plugin から WIZARD モードで実行します。
詳しい説明は こちら を参照ください。

Gradleタスク実行コマンド
.\gradlew.bat :entityViewDdl
実行時に文字化けする場合は、VM引数に -Dstdout.encoding=UTF-8 -Dstderr.encoding=UTF-8 を設定してください。(環境変数 JAVA_TOOL_OPTIONS に設定する等)

4.2. service-config 表示

バッチツール service-config viewer を plugin から実行します。
詳しい説明は こちら を参照ください。

Gradleタスク実行コマンド
.\gradlew.bat :serviceConfigView