Show page source of Development #113047

== 開発者向け情報

=== 開発環境の準備
  1. Java8(またはJava11) のインストール(JREではなくJDKを推奨。最新バージョンを使うようにしてます)
  1. Eclipseのインストール(4.10推奨)
  1. [https://eclipse.org/windowbuilder/download.php WindowBuilderの]インストール(推奨)
  1. プロパティエディタのインストール(推奨)
  1. m2e Maven Integration for Eclipseのインストール(DdlUtilsのビルドとTMD-Makerのmavenビルド用。)
  1. Tycho Configuratorのインストール(DdlUtilsのビルドとTMD-Makerのmavenビルド用。)。Preferences/Maven/Discovery の Open Catalog で検索。
  1. ReST Editor Pluginのインストール(reStructuredTextのドキュメント作成用)
  1. maven3のインストール(任意。DdlUtilsのビルドとTMD-Makerのヘッドレスビルド用。)
  1. xtendのインストール(tmdmaker.sphinxのxtendファイル編集用)
  1. preferences->Plug-in Development->API BaselinesのMissing API Baselineをignoreに変更。
  1. git-configの設定変更。
  1. tmdmaker.gitのリポジトリをクローンする。
  1. tmdmaker.releng.targetplatform/2018-12.target(使っているバージョンに合わせる)を開き、Set as Target Platformをクリックする(古いバージョンをお使いの場合は手動で調整してみてください)
  1. カスタマイズした[https://github.com/nakag/ddlutils DdlUtils]をリポジトリからチェックアウトする。(DdlUtilsを修正する場合のみ必要。ライブラリはddlgenerator に同梱する)
    * tmdmaker.gitのプロジェクト概要

{{{
 tmdmaker → rootプロジェクト。プラグイン等の集約元
├── bundles → プラグイン置き場
│   ├── jp.osdn.tmdmaker.extensions → TMD-Makerの拡張機能を定義しているプロジェクト
│   ├── tmdmaker → TMD-MakerのGUIエディタ等の主要プロジェクト。今後用途別に分割予定
│   ├── tmdmaker.core → TMD-Makerのモデルプロジェクト
│   ├── tmdmaker.csv → CSVファイルインポート機能
│   ├── tmdmaker.ddlgenerator → データベース選択、DDL出力機能
│   ├── tmdmaker.htmlgenerator → 各定義書のHTML出力機能
│   ├── tmdmaker.imagegenerator → TMDのダイアグラムを画像に変換する機能
│   ├── tmdmaker.nl_ja → TMD-Maker Pluginの日本語ロケールプロジェクト
│   ├── tmdmaker.rcp → RCPのプロジェクト。TMD-Maker Pluginとビューワを同梱
│   ├── tmdmaker.rcp.nl_ja → RCPの日本語ロケールプロジェクト
│   ├── tmdmaker.serializer → TMDの保存(XML⇔モデルの相互変換)機能
│   ├── tmdmaker.serializer.handler.patch → TMDの変換前後でモデルを補正する機能(データ補正パッチ)
│   ├── tmdmaker.sphinx→ Sphinxのドキュメントを生成するためのプロジェクト
│   └── tmdmaker.ui.menu→ TMDをeclipseのメニューから操作する機能。UIプロジェクトを作って統合するか?
├── docs → ドキュメント置き場
│   ├── tmdmaker.doc → ドキュメント生成用。aggregateできないjacocoとsphinxで作ったマニュアル生成に使ってる
│   └── tmdmaker.landing → Webサイトのトップページ生成用
├── features → feature置き場
│   ├── jp.osdn.tmdmaker.extensions.scaffold.feature → TMD-Makerのplugin雛形のfeature
│   ├── tmdmaker.e3.feature → TMD-Maker のEclipse 3.x向けPluginのfeature
│   ├── tmdmaker.feature → TMD-Maker Pluginのfeature
│   └── tmdmaker.rcp.feature → TMD-Maker RCPのfeature
├── releng → ビルド設定置き場
│   ├── jp.osdn.tmdmaker.configuration → TMD-Makerのビルド設定用。共通設定を定義
│   ├── jp.osdn.tmdmaker.releng.extensions.scaffold → TMD-Makerのplugin雛形のビルド設定用
│   ├── tmdmaker.releng.e3.plugin.updatesite → TMD-Maker Plugin Updatesite for Eclipse 3.x
│   ├── tmdmaker.releng.plugin → TMD-Maker Pluginのビルド設定用
│   ├── tmdmaker.releng.plugin.updatesite → TMD-Maker Plugin Updatesite for Eclipse 4.x
│   ├── tmdmaker.releng.product → TMD-Maker RCPのビルド設定用
│   └── tmdmaker.releng.targetplatform → TMD-Makerのビルド設定用。ターゲットプラットフォーム設定を定義
├── src → 今の所siteのファイル置き場
└── tests → テストプラグイン置き場
    ├── jp.osdn.tmdmaker.csv.test → CSVファイルインポート機能のテストプロジェクト
    ├── tmdmaker.core.test → TMD-Makerのモデルのテストプロジェクト
    ├── tmdmaker.serializer.test → TMDの保存機能のテストプロジェクト
    ├── tmdmaker.test → tmdmakerプロジェクトのテストプロジェクト
    └── tmdmaker.ui.test → tmdmakerのUIテストプロジェクト

}}}

=== ブランチ
 * master
  リリースバージョン
 * develop
  開発バージョン(リリースバージョンのマイナー番号++)

=== バージョン採番ルール
major . minor . service 

 * major : 大きな機能変更が発生する場合に加算。バージョン1はいつにしようか。。。
 * minor : 通常は次バージョンはこの値を加算する
 * service : 現バージョンのバグ修正版

=== リリース
8月(20XX-06)、2月(20XX-12)の年2回リリースを目標とする。

=== ビルド方法

  1. 手動
    * plugin
      1. tmdmaker.feature/feature.xml を開く。
      1. OverviewタブのEclipse Product export wizard を実行する。
      1. ExportダイアログのDestinationタブ内のarchive file に${任意の出力先ディレクトリ}/tmdmaker_${version}.zipを入力する。
      1. ExportダイアログのOptionsタブ内のAllow for binary cycles in target platform以外のチェックを外す。
      1. ExportダイアログのFinishボタンを押下する。
      1. Archive fileの出力先にリリースファイルが作成される。
    * RCP
      1. tmdmaker.rcp/tmdmaker_rcp.product を開く。
      1. OverviewタブのExport Wizard を実行する。
      1. Configurationに /tmdmaker.rcp/tmdmaker_rcp.product を入力する。
      1. Root directoryに tmdmaker を入力する。
      1. Synchronize before exporting をチェックする。
      1. Archive file に${任意の出力先ディレクトリ}/tmdmaker_for_rcp_${version}.zipを入力する。
      1. ExportダイアログのExport Options内のExport source以外をチェックする。
      1. Nextボタンを押下する。
      1. Available platformsで任意のプラットフォームを選択してFinishボタンを押下する。
      1. Archive fileの出力先にリリースファイルが作成される。
  2. mavenビルド(ヘッドレスビルド)
    1. tmdmakerのrootへ移動
    1. mvn -P 2018-12 clean verify ~~install~~ を実行(installしたバンドルは.m2ディレクトリから削除してください)
      * tmdmaker.releng.plugin/target/直下にtmdmaker_plugin_${version}.zipが生成される。
      * tmdmaker.releng.product/target/produts直下にtmdmaker_${version}-${arch}.zip/tar.gzが生成される。
  3. mavenビルド(stageサイト生成)
    1. tmdmakerのrootへ移動
    1. mvn  -P 2018-12 clean install site site:stage を実行
    1. target/siteにwebサイトのファイル群が生成される。
  4. mavenビルド(本番サイトデプロイ)
    1. ~/.m2/settings.xmlの設定を確認
{{{
<settings>
	<servers>
		<server>
			<id>tmdmaker-site</id>
			<username>sourceforge.jpのユーザID</username>
<!-- 			<password>鍵認証なので設定しない</password> -->
 			<filePermissions>664</filePermissions>
			<directoryPermissions>775</directoryPermissions>
			<passphrase>鍵認証のパスフレーズ(必要な場合)</passphrase>
			<privateKey>秘密鍵の場所(デフォルト値と同じ場合は設定不要)</privateKey>
		</server>
	</servers>
</settings>
}}}
    1. tmdmakerのrootへ移動
    1. mvn  -P 2018-12 clean install(eclipseから実行する場合はverifyに設定しワークスペース内で依存性解決する) site site:deploy を実行
    1. [https://tmdmaker.osdn.jp/ TMD-MakerのWebサイト]にデプロイされる。

=== SWTBotの手動テスト
こちら参照
https://wiki.eclipse.org/SWTBot/UsersGuide#Configuration

Run Configurationでargumentに-nl enを追加してください。

=== Mavenで生成したサイト
https://tmdmaker.osdn.jp/

カバレッジとかメトリクスとかは徐々に改善していきましょう。
見える化するとやる気が出るかなと思っただけなので。。。

=== 最新版マニュアル
https://tmdmaker.readthedocs.io/ja/latest/

=== バージョンアップ
Tycho Versions Plugin と手動で設定ファイルを書き換える。tmdmaker.releng/setupNewVersion.shコマンドで以下を一括更新予定(未テスト)。
 1. Tycho Versions Plugin でpom.xmlとMANIFEST.MFのバージョンを上げる。
{{{
mvn tycho-versions:set-version
}}}
 1. 以下のファイルのバージョンを手動で上げる。
 * tmdmaker.releng/pom.xmlのrelease-version
 * tmdmaker.rcp/about.mappingsの0
 * tmdmaker.rcp/plugin.xmlのextensions/org.eclipse.core.runtime.products/TMD-Maker for RCP/buildId
 * tmdmaker.rcp/tmdmaker_rcp.productのversion
 * tmdmaker.releng.product/tmdmaker_rcp.productのversion
 * tmdmaker.doc//src/site/sphinx/conf.pyのversion、release

=== TMD-Makerの使用ライブラリ
 * [http://www.slf4j.org/ slf4j-1.7.25]
 * [http://x-stream.github.io/ xstream-1.4.10]
 * [https://github.com/nakag ddlutils-1.1]apache ddlutilsをfork。git svn clone -s  http://svn.apache.org/repos/asf/db/ddlutils/ 
 * [http://velocity.apache.org/ velociry-1.7]
 * [http://sourceforge.net/projects/opencsv/ opencsv2.3]
=== Git参考資料
 * [http://progit.org/book/ja/ progit]
 * [http://keijinsonyaban.blogspot.com/2010/10/successful-git-branching-model.html successful git branching model].gitを使ったブランチモデル。開発時の参考にしたい。
=== UI開発資料
 * [http://wiki.eclipse.org/User_Interface_Guidelines ユーザインターフェースガイドライン]Eclipse標準?
 * [http://www.eclipse.org/articles/swt-design-2/sleak.htm sleak]SWTリソースリークの検出ツール
=== その他資料
 * [http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html javadoc].javadoc書くときの参考に
 * [http://www.smg.co.jp/JavaTroubleshooting/findbugs/ findbugs].findbugsのチェック項目一覧
まだ開発資料がまとまっていませんが、開発協力者は随時募集してます。興味がある人はご連絡ください。