== 開発者向け情報 === 開発環境の準備 1. Java8(またはJava11) のインストール(JREではなくJDKを推奨。最新バージョンを使うようにしてます) 1. Eclipseのインストール(4.12推奨) 1. Tycho Configuratorのインストール(TMD-Makerのm2eビルド用。)。Preferences/Maven/Discovery の Open Catalog で検索。 1. [https://eclipse.org/windowbuilder/download.php WindowBuilderの]インストール(推奨) 1. プロパティエディタのインストール(推奨) 1. ReST Editor Pluginのインストール(推奨。reStructuredTextのドキュメント作成用) 1. SonarLintのインストール(推奨。ソースコード改善指針) 1. SWTBotのインストール(推奨。IDE上でのGUIテスト用) 1. xtendのインストール(推奨。tmdmaker.sphinxのxtendファイル編集用) 1. maven3のインストール(推奨。TMD-Makerのヘッドレスビルド用。) 1. preferences->Plug-in Development->API BaselinesのMissing API Baselineをignoreに変更。 1. git-configの設定変更。 1. tmdmaker.gitのリポジトリをクローンする。 1. tmdmaker.releng.targetplatform/2019-06.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 2019-06 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 2019-06 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 2019-06 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/ === バージョンアップ 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] * [https://github.com/haraldk/TwelveMonkeys TwelveMonkeys ImageIO 3.4.1] === 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のチェック項目一覧 まだ開発資料がまとまっていませんが、開発協力者は随時募集してます。興味がある人はご連絡ください。