iDempiereとJPiereの開発環境構築（Windows環境）


前回は、[Windows上のDockerに実行環境を構築](https://qiita.com/idempiere-fan/items/ca8520f567c5939cc5cc)してみました。
今回は、iDempiere/JPiere本体の開発環境を構築してみます。

## 今回やってみたこと
Eclipse上でiDempiere/JPiere本体のモジュールをビルドして、Windows10のローカル環境で動作させてみます。
今回は、**JPiere Ver10の環境を構築**します。
基本的には、公式マニュアルどおりに手順を進めると環境構築が完了します。

## セットアップ公式マニュアル
こちらを参考にさせていただきました。
JPiereをセットアップするにあたり、iDempiereの環境を先に構築します。

https://www.compiere-distribution-lab.net/idempiere-lab/dev/idempiere10/

https://www.compiere-distribution-lab.net/jpiere-lab/dev/

## iDempiere/JPiereのモジュール群の準備
jarライブラリを含め非常にファイル数が多いので、ネットワークが安定した環境でセットアップします。
本来のライブラリのコピーから必要なモジュールのダウンロードは以下の手順で行います。
PostgreSQLおよびGitをインストールしたら具体的なセットアップ作業にはいります。
また、MavenはVer3.6.3を前提としているようなので、以下のサイトからあらかじめダウンロードしbinディレクトリまでのパスを通しておきます。

* Mavenダウンロード

https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/

### iDempiereモジュール関連準備
* ソースコードのダウンロードと各モジュールのビルド
50個のモジュールのビルドまで実行されれば完了です。
私が当初検証した環境では、ビルド完了まで約30分かかりました。
mvn verifyコマンドを実行後、のんびりと待ちましょう。
```dosbatch
mkdir C:\idempiere_src
cd C:\idempiere_src
git clone https://github.com/idempiere/idempiere.git
cd idempiere
git checkout release-10
mvn verify
・・・・
Downloaded from Central: https://repo1.maven.org/maven2/org/glassfish/pfl/pfl-asm/4.1.0/pfl-asm-4.1.0.jar (358 kB at 766 kB/s)
Downloading from Central: https://repo1.maven.org/maven2/org/glassfish/pfl/pfl-asm/4.1.0/pfl-asm-4.1.0-sources.jar
Downloaded from Central: https://repo1.maven.org/maven2/org/glassfish/pfl/pfl-asm/4.1.0/pfl-asm-4.1.0-sources.jar (379 kB at 521 kB/s)
・・・・
[INFO] org.idempiere.javadoc .............................. SUCCESS [  0.411 s]
[INFO] org.idempiere.p2.targetplatform .................... SUCCESS [  0.017 s]
[INFO] org.idempiere.main ................................. SUCCESS [  0.014 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

・・・・
```
ここまでで、iDempiereの環境が出来上がりました。
なお、ここまでで、iDempiereのモジュールおよびサービスが起動できるか確認することができます。
以下のserver.productを指定してサービスが起動後、「iDempiere/JPiere画面の動作確認」を参照しブラウザで確認することができます。ログインまではできると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3514304/a72ab3e5-81e4-15fb-a454-3982c3aefa97.png)

つづいて、JPiere環境としてプラグイン等を準備していきます。

### JPiereモジュール関連準備
JPiereの環境構築のためのマニュアルはこちらを参照。

https://www.compiere-distribution-lab.net/jpiere-lab/dev/

JPiereのモジュールは、大きく4つのプラグインから構成されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3514304/2a30a112-e2b2-b4b8-00ca-8376925ff418.png)
※ 上記構成図は、公式サイトから抜粋

続いて、JPiereの3つのモジュールおよびiDempiereの1つのモジュールのコードをEclipse上にセットアップしていきます。
JPPS：JPiere Pluginsについては、各ディレクトリとして配布されていました。
以下のフォルダからcloneします。なお、Ver10を前提に環境を構築していますので、iDempiere同様にJPiereのモジュールもブランチにVer10（gitコマンドに「-b release-10」を付与）を指定します。
* Github

JPiereフラグメンツ 【JPFS：JPiere Fragments】

https://github.com/JPiere/JPFS

JPiereベースプラグイン【JPBP：JPiere Base Plugin】

https://github.com/JPiere/JPBP

JPiereプラグインズ【JPPS：JPiere Plugins】
jpiere.plugin.delete

https://github.com/JPiere/jpiere.plugin.delete

jpiere.plugin.groupware

https://github.com/JPiere/jpiere.plugin.groupware

jpiere.plugin.webui.formwindow

https://github.com/JPiere/jpiere.plugin.webui.formwindow

jpiere.plugin.webui.matrixwindow

https://github.com/JPiere/jpiere.plugin.webui.matrixwindow

jpiere.plugin.webui.simpleinputinputwindow

https://github.com/JPiere/jpiere.plugin.webui.simpleinputwindow

JPiereモディフィケーションズ【JPMS：JPiere Modifications】

https://github.com/JPiere/JPMS

### JPiereの各ソースの準備
```
cd C:\idempiere_src
git clone https://github.com/JPiere/JPFS.git -b release-10
git clone https://github.com/JPiere/JPBP.git -b release-10
git clone https://github.com/JPiere/jpiere.plugin.delete -b release-10
git clone https://github.com/JPiere/jpiere.plugin.groupware -b release-10
git clone https://github.com/JPiere/jpiere.plugin.webui.formwindow -b release-10
git clone https://github.com/JPiere/jpiere.plugin.webui.matrixwindow -b release-10
git clone https://github.com/JPiere/jpiere.plugin.webui.simpleinputwindow -b release-10
git clone https://github.com/JPiere/JPMS.git -b release-10
```
上記ソースコードのディレクトリに対して、Mavenプロジェクトを指定してEclipseにインポートします。
この手順も、公式マニュアルに沿って操作すると環境構築が完了できます。

* 各ディレクトリのclone後の状態
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3514304/faef5299-11a0-5d40-970a-a2c6a453c848.png)

## ソースコードとEclipseプロジェクト
各モジュールをインポートしたソースコードとEclipseプロジェクト一式をこちらのGithub上に公開しています。ご参考まで。


## セットアップ時の考慮点
* eclipseは、マニュアルにある通り2022/03版を用意します。私の環境に複数のeclipseがインストールされており、2000版を使用したらeclipse上で各ライブラリが読み込み対象外として扱われるなど、色々な問題が発生しました。

* 接続先のPostgreSQLは、前回の投稿で構築したDocker上のPostgreSQLに接続します。
docker-entrypoint.shを参照し、必要な情報を登録します。
```
KEY_STORE_ON=${KEY_STORE_ON:-whoami}
KEY_STORE_OU=${KEY_STORE_OU:-JPiere Docker}
KEY_STORE_O=${KEY_STORE_O:-JPiere}
KEY_STORE_L=${KEY_STORE_L:-Asia/Tokyo}
KEY_STORE_S=${KEY_STORE_S:-CA}
KEY_STORE_C=${KEY_STORE_C:-JP}
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3514304/8983d844-6ee1-9b33-fec8-f5737a36c92f.png)

* pom.xmlを修正後の操作
pom.xmlのパスを修正したら、Mavenのメニューからプロジェクトを更新します。※ 赤い×マークが消えます
```diff
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<artifactId>jpiere.base.plugin</artifactId>
	<packaging>eclipse-plugin</packaging>
	<name>jpiere.base.plugin</name>
	<parent>
 		<groupId>org.idempiere</groupId>
		<artifactId>org.idempiere.parent</artifactId>
		<version>${revision}</version>
-       <relativePath>../../../../../../../src/pleiades202112_JPiere10/org.idempiere.parent/pom.xml</relativePath>
+		<relativePath>../../idempiere/org.idempiere.parent/pom.xml</relativePath>
	</parent>
</project>
```
Peoject Explorerから当該プロジェクトを選択して、「Maven -> Update Project」を選択後、以下の画面が表示されますので、jpiere・・・をすべて選択してOKボタンをクリックし更新します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3514304/1baa92b4-d218-208a-0723-386b6537ac01.png)


## iDempiere/JPiere画面の動作確認
server.productを指定してサービスが起動後以下のURLにブラウザからアクセスします。

https://127.0.0.1:8443/webui
にアクセスします。
PostgreSQLサーバーは[前回同様のインスタンス]()を使用しますので、ログイン情報も同様の文字列を指定します。
**メール：** superuser(at)oss-erp.co.jp
**パスワード：** System

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3514304/c93f5f34-ab0b-acc1-e448-dd1c2015dbbc.png)

上記の画面が表示されれば動作確認完了です。

## 残対応
ソースコードをローカル環境に展開して、Eclipseからサービスを起動し画面の操作するまでを検証してみました。
残対応は、公式マニュアルに説明されています「インストールパッケージの作成方法」および「iDempiere6.1以上でJPiereをインストールパッケージに含めるためのPOMファイルの修正」です。
また、httpsでの接続の確立と、PostgreSQLのデータが古いことによる警告が出ている点について、次回以降に検証したいと思います。

## 次回は
ここままでiDempiere/JPiere開発環境が整いました。
公式マニュアルも非常に丁寧の掲載してくださっており、マニュアル通りに進めて開発構築することができました。
iDempiere/JPiere開発チームに感謝いたします。

今後は、実際のプラグインのカスタマイズ（[iDempiereのプロセスについて](https://qiita.com/idempiere-fan/items/519507eb6fa9a94b791e)検証）、データベースアクセスIOおよび、認証関連を検証していきたいと思います。