たちまち。

即席で役に立つこと。

intra-mart AccelPlatformでwar入れ替えせずにモジュール追加する方法

iAPにおいて、何かのモジュールを追加したい、となったとき。

アプリケーションやエクステンションの追加など、大きな変更の場合は正式作業としてwar入れ替えを行えばいいが、軽微な変更の場合にいちいちwarを入れ替えるのは面倒くさい

例えば認可のExcelインポートエクスポートを追加したいとか、テーマカスタマイズモジュールを追加したいとか、IM-Noticeを追加したいとか…。

warを入れ替えてしまうとログが消えるのと、直接書き換えていた設定ファイルや追加したソースなどが全て元に戻るため、影響調査が大変なのだ。(それも含めてちゃんとjugglingで管理しとくのが筋なのだが…現場はそうではない)

そこで、warを入れ替えずにモジュール追加するにはどうすれば良いか。

結論から言うと、「差分を抽出して適用する」というのが賢いやり方だ。

手順1. 変更前のwarを取得し、解凍する

現行のwarファイルを取得する。

warファイルの拡張子をzipに変更し、解凍しておく。

手順2. 変更後のwarファイルを作成、解凍する

jugglingツールにて、モジュールを追加したwarファイルを作成する。

作成したwarは同じく拡張子をzipに変更し、解凍しておく。

手順3. 比較する

変更前の解凍フォルダと変更後の解凍フォルダをWinMerge等の比較ツールで比較する。

結果、変更された差分が出力される。→これらが適用すれば良い差分となる。

※Webサーバがある場合、静的ファイル(WEB-INFの外)も忘れずにWebサーバに適用すること。

※WEB-INF直下のjuggling.ほにゃららも差分として出るが、必要なので忘れずに適用すること。

手順4. 比較結果を抽出する

この差分をどのように抽出すれば良いか。やり方は様々あると思うが、私が行っているのはWinMergeを使い、以下の通り。

1. WinMergeの結果を比較結果でソート

2. 変更点のある行だけShift+クリック等で選択

3. 右クリック>コピー>左を...(または右を...)

4. 任意のフォルダに出力

手順5. 環境に反映する

Resinを停止し、抽出したファイルを反映して、Resinを起動する。

必要に応じてテナント環境セットアップなどを行うこと。

以上。