iDempiere10の開発環境の構築
iDempiere10の開発環境の構築について調査及び研究し、その成果をまとめています。
ページ内目次
開発環境PC推奨スペック
◆メモリ:16GB以上のPC
- 4GBのメモリでは、Eclipseを立ち上げるのも精いっぱいな感じで、まともに作業ができる環境にはならないと思います。少なくともメモリは8GB以上、快適に作業したいのであれば16GB以上のメモリを推奨します。
- CPUのコア数も多い分には越したことはありません。最低でも2コアは欲しいですし、快適に作業したいのであれば4コア以上を推奨します。
- HDDは、快適に作業したいのであればSSDをオススメします。
iDempiereがインストールできる環境が整っている事
◆JDKのインストール
- iDempiere10 -> JDK11(※iDempiere10はJava17 でも動作しますが、開発環境ではJDK11が推奨されています)。
◆PostgreSQLのインストール
PostgreSQLをインストールしたら、adempiereユーザーを登録し、iDempiereのダンプファイルをリストアして下さい。下記、JDBCのバージョンに対応したPostgreSQLを使用して下さい。
- iDempiere10 -> JDBCのバージョンは、42.5.0です。
※PostgreSQL14/PostgreSQL13あたりがおすすめです。
開発環境をセットアップするための準備
◆Mavenのインストール
iDempiereでは、バージョン6.1よりビルドツールがMavenに変更になっています。そのためMavenをインストールして下さい。
※Mavenのバージョンは、3.6.3が推奨されています。
◆Gitのインストール
iDempiereでは、バージョン7.1よりソースコードの管理がMercurialからGitに変更になっています。そのためGitをインストールして下さい。
◆Eclipseのダウンロード
iDempiereはEclipseを使って開発して行きます。iDempiere10においては、Eclipse2022-03版が推奨されています。「Eclipse IDE for Enterprise Java and Web Developers」をダウンロードして下さい。
【補足説明】Pleiadesでの開発環境構築
Eclipseの日本語版の環境ともいえるPleiadesで開発環境を構築したいと考える人も多いと思いますが、このコンテンツを作成している2023年4月時点では、Pleiadesは2022年は12月のバージョンしか公開されていないように思われます。そのためiDempiere10で、Pleiadesを使用したい場合は、2021年最新版(12月バージョン)を使用するのをオススメします。いろいろと開発環境の構築を試してみましたが、Pleiadesを使用する場合は、2021年最新版を使用して頂くのが、試した中では一番問題なく開発環境を構築できました。
※Pleiades2022-12でiDempiere10の開発環境を構築することは可能ですが(実際数か月開発もしました)、org.idempiere.testプロジェクトでエラーが解消しないこと(エラーは表示されていても問題なく開発はできる)と、モデルジェネレーターがエラーで起動できないことを確認しています。
ソースコードのダウンロード
GitHubからソースコードをクローンします。
このコンテンツでは、Cドライブの直下に、srcというフォルダを作成して、そこにソースコードをダウンロードしている想定で説明しています。
git clone https://github.com/idempiere/idempiere.git
こでれ、下記の場所にソースコードがダウンロードされているはずです。
C:\src\idempiere
ブランチの切り替え(メンテナンス用のブランチのチェックアウトする)
上記のコマンドでクローンしたままでは、ワークスペースのブランチは"master"の状態になります。masterのブランチは、iDempiereコミュニティーとしては、次のバージョンに向けての開発用のブランチとの位置づけです。そのため、メンテナンスを行っているブランチに切り替える必要があります。
◆iDempiereのブランチ
- iDempiere10のブランチ名は、"release-10"です。
git checkout release-10
Mavenのverifyの実行
GitHubからソースコードをクローンしたら、Eclipseで開く前に、Mavenのverifyを実行して、インストールパッケージが問題無く作成できる事を確認して下さい。
mvn verify
Mavenのverifyを実行すると、iDempiereのインストールパッケージが下記のフォルダに作成されます。C:\src\idempiere\org.idempiere.p2\target\products\org.adempiere.server.product
この時点で、インストールパッケージまで作成できる事を確認するのは、開発環境構築の際のエラー原因を切り分けるためにも大切です。この時点でインストールパッケージが作成できているのであれば、ここまでの作業は問題無く行われているという確認になります。
【補足説明】mvn validate は必要ありません。
iDempiere9までは、mvn verifyの前に、mvn validateを実施するように案内いたしましたが、iDempiere10においては、mvn validateを実施する必要はありません。いきなりmvn verifyを実行してください。
参考
iDempiereのソースコードをダウンロードしているフォルダ(ディレクトリ)をワークスペースに指定する
ここからは、先にダウンロードしているソースコードのフォルダを「eclipse202203_JPiere10」とリネームして、Cドライブのsrcフォルダの直下にあることを前提に説明します。
自動的にビルドをOFFにする
開発環境の設定を変更する都度ビルドされると、時間がかかるので、自動的にビルドはいったんOFFにしましょう!!
ワークスペースの確認
Eclipseのメニュー > window > Preferencesで、ワークスペースの設定を確認して行きます。
General > Workspaceの設定を開いて、encodingを"UTF-8"、Line delimiterを"Unix"に変更します。
OpenJDK11のインストール
Java > Installed JREsで先にダウンロードしているOpenJDK11を追加します。
コンパイラーの設定
java > Compiere で、主にコンパラ―の設定を確認して行きます。
Compiler compliance level:を "11"にします。
ビルド・パスの問題で、「ビルド・パス・エラーの発生時にビルドを中断」を"OFF"にするのと、「不完全なビルド・パス」を"警告"、「循環依存関係」も"警告"にする事をオススメします。
Tycho(タイコー)のインストール
Tychoをインストールします。TychoのインストールはEclipseに対して1回だけ実行する必要があります。開発環境を構築しなおすような場合は、既にTychoはEclipseにインストールされていますので、再度インストールするような必要はありません。
ライセンスに同意して、Finishボタンを押すとインストールが開始されます。
「Trust Selected」を押すと再起動が促されますので、指示に従ってEclipseを再起動してください。
Mavenプロジェクトのインポート
org.idempiere.p2.targetplatform.targetをダブルクリックすると、自動的にターゲットに設定されている色々なjarファイルのダウンロードが開始されます(※Eclipseの右下の処理を行っているプログレスバーに注目して下さい)。この処理は、時間的には結構かかります(目安:10分~30分くらい)。終わるまで、ちょっと一休みして下さい(*´▽`*)。
Eclipseの右下に進捗状況が表示されます。
処理が一通り完了しても、下記のようにエラーになっている場合があります。
そのような場合は、「Update」や「Reload」を何度か実施して、エラーが無い状態にします。
処理が完了したら、"Set as Active Target Platform"をクリックします。
"Set as Active Target Platform"をクリックすると、また処理が少し入ります。ここが無事終わったらクリーン&ビルドを実行して行きます。
クリーン&ビルドの前に、Project Explorerで、プロジェクトを全選択して、右クリックし、リフレッシュを行っておくのをオススメします。
自動的にビルドをONにする
自動的にビルドをONにすると、ビルドが自動的に実行されます。
クリーン&ビルドの実行
クリーン&ビルドを実行して、エラーが出なければ、開発環境の構築は、ひとまず完了です。
後は確認として、iDempiereの初期セットアップを行ってEclipseから起動してみましょう!!
クリーン&ビルドを実行しても、Eclipseのエラー表示が消えない場合
この段階でも、Eclisepのエラー表示が無くならないのは比較的よくあります。
そのような場合、下記の対応を行ってみて下さい。
◆【対応1】自動的にビルドがONになっているのを確認した上で、もういちどターゲットプラットフォームの設定を行って下さい。
ターゲット定義を開いて、もういちど、[Update] -> [Reload] -> [set as Active Target Platform(Reload Target Platform)]を実行して下さい。
[自動的にビルド]をONにした事により、処理が実行された後で、すぐにビルドが行われます。そのビルドが完了すると、エラーが消えることがほとんどです。
◆【対応2】変更されているファイルをもとに戻す
基本的に多くの場合【対応1】を実行すれば、Eclipseのエラー表示は消えると思います。しかしながら、何度行っても消えない場合もあるかと思います。そのような場合は、ファイルが変更になっていなかどうか、バージョン管理ツールを用いて確認してみてください。
Eclipseを閉じる際に、意図していないファイルが修正されてしまう事象を確認しており、その影響が考えられます。
ソースツリーを使ってバージョン管理している場合、変更になっているファイルを右クリックして、[破棄]を選択して、もとに戻して下さい。PleiadesのAll in Oneを使っている場合であれば、Gitのパースペクティブに切り替える事により、同様の事ができるはずです。
経験的に下記のファイルが、意図せずに更新されてしまっている事象を確認しています。
- server.product.launch
- org.idempiere.p2.targetplatform.target
この事象は、Eclipse[Pleiades]もしくはTychoプラグインの不具合だと思われます。この事象は、[ターゲット定義(Target Definition)]タブを開いたまま、Eclipseを閉じると発現する事がある様子です。
【ポイント】Eclipseを終了させる前に、ターゲット定義タブを閉じる
この事象に遭遇しないようにするために、Eclipseを終了させる前には必ずターゲット定義(Target Definition)タブを閉じるようにして下さい。
◆【対応3】エラーになっているプロジェクトの更新
エラーになっているプロジェクトを右クリックして Maven > Update Project..を実行してみて下さい。
◆【対応4】org.idempiere.p2.repository.targetに切り替えてみる
org.idempiere.p2.targetplatformプロジェクトの中にある、「org.idempiere.p2.repository.target」をダブルクリックして、ターゲットプラットフォームに設定します。
そうしてクリーン&ビルドすると、経験的に「org.idempiere.test」プロジェクトがエラーの状態になっていることが多いですが、このエラーは無視しても開発できるかなと思います。
【注意】model.generatorのエラー
『【対応4】org.idempiere.p2.repository.targetに切り替えてみる』を実行してエラーが解消された場合、通常の開発においては問題は把握していませんが、model.generatorの実行時においてはエラーになることを確認しています。
◆【対応5】最初からもう一度、開発環境を構築する
いろいろ行ってもエラーが解消しない場合は、そのソースコードはすべて削除して、git clone からやりなおすことも一つの方法です。もう一度構築し直すとすんなりできることもあります。
その際には、Cドライブ直下にある「ユーザー」フォルダの、{ユーザー名}フォルダの配下にある「.m2」フォルダ内の「repository」フォルダも削除して(※リネームして退避して)試してみて下さい。 そしてpleiadesの2021年の最新版を使用して環境構築している場合で、ver9の環境とver10の環境の両方を構築しようとしている場合は、pleiades自体もiDempiereのver9とver10で別々に用意して試してみて下さい。
上記の赤線のように、iDempiereのver9とver10で、pleiadesの2021年の最新版をわけて構築してみて下さい。
実行構成のポップアップの左側にある、[Eclipseアプリケーション]の[install.app]を選択し、実行して行きます。
【注意】
- 実行構成のポップアップは低スペックの環境だと開くのに少し時間がかかります。
- Eclipseアプリケーションの[install.app]を選択したら、[メイン]タブの内容が変更になるのを確認して、[実行]ボタンを押してください。
サーバーの設定は、インストールの時と同じです。
実行構成のポップアップの左側にある、[Eclipseアプリケーション]の[server.product]を選択し、実行して行きます。
[server.product]を実行すると次のようなエラーが出る時があります。