本篇文章更新時間:2025/01/19
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣新台幣 贊助支持。


早在 2019 年已經寫過的 [iDempiere] 開源 ERP 的編譯與執行(Mac 開發者篇)[iDempiere] 開源 ERP 的編譯與執行 過了六年其實變化不少!

主要是環境上已經沒有以前這麼「克難」了!很多方便的工具選擇與替換。本篇就是重新紀錄一次最近一次的環境建置方法與流程。

環境需求主要的改進:

  1. iDempiere 從 Mercurial 改由 Git 作為版控的工具。Mac 本身內建這個版本控制工具了,所以原本處理 Mercurial 的部分就可以省略。

  2. Eclipse IDE 編輯器的改進,也讓很多原本要安裝的套件可以省去。

  3. PostgreSQL 版本的最小要求從 9.6 後到現在 11 後。

前置準備

iDempiere 的前置準備文件中,描述的基本需求如下:

  • PostgreSQL 15 (used for this guide, you can use any postgres >=11)(本文使用 PostgreSQL 17)
  • git Client
  • Maven 3.9.x(本文使用 Maven 3.9.9)
  • OpenJDK 17(本文使用 OpenJDK 23)
  • Eclipse IDE for Enterprise Java Developers 2024-03(本文使用2024-12 4.34)

文件是用 Ubuntu 系統,這邊只是改為 Mac OS。

環境安裝

這邊主要其實安裝三個工具就好。環境的簡化與彈性一直有人在持續努力,這次只需要安裝:

  1. SDKMAN - 用來安裝/管理作業系統中使用到的 SDK 等套件。(由其又偏重 JAVA 這方面)

  2. Eclipse IDE for Enterprise Java and Web Developers - 記得選到 Enterprise Java and Web Developers 這版本的就沒問題了,很多原本要延伸安裝的套件都有整合。

  3. Postgres app - 先前也有寫文介紹過 [Mac] 超級方便開發使用的 PostgreSQL 資料庫工具 – Postgres.app,本篇就不再贅述這一部分。

Eclipse 與 Postgres 這兩套都是直接安裝 App 就可以使用,而 SDKMAN 的安裝會需要一行指令來進行 curl -s "https://get.sdkman.io" | bash

安裝好後的重點會放在使用它來安裝 OpenJDK 以及 Maven 的部分。使用下方指令安裝這兩個元件:

sdk install java 23-open
sdk install maven

安裝完成後,可以使用 sdk current 來查看安裝與啟用的狀態。

這工具的使用方法如果用過 nvm, gvm 的人應該都不陌生,就是差不多概念的環境版本管理工具。

確認 Eclipse 可以打開後,到 Help -> Install New Software 搜尋系統當前安裝的 Java 版本(這邊就是 Java 23),找到 Java 23 Support for Eclipse... 安裝下去。

環境的處理到這邊就算完成,真的是簡單太多!

下載 iDempiere 原始碼

建立一個工作目錄 ~/workspace/idempiere,在該目錄:

git clone https://github.com/idempiere/idempiere.git
git switch release-12 # 切到當前穩定版本 12
git pull # 更新程式碼到最新

如果有延伸開發的需求,建議是先複製一份出去來接續處理。

到這步,其實就可以直接指令測試編譯 mvn verify -U (需要好一段時間處理,也可以使用 mvn validate 驗證)

先前 6.x 版本的時候還需要把編譯的目標環境補上 MacOS,現在都不用了!

nvm_validate_screen

基本上看到這樣一片 SUCCESS 綠油油就沒問題,可以開始將專案導入 Eclipse 中。

建立 Eclipse 專案環境

首先開啟 Eclipse,預設的 workspace 與 iDempiere 建立的 workspace 沒有關係。

可以先從 File -> Switch Workspace 將預設目錄切換到放置要開發的 iDempiere workspace 目錄。

再來透過 File -> Import 匯入的功能將 iDempiere 這個 Maven 專案匯入,這段與先前作業無異。

預設編輯的檔案編碼也已經是 UTF-8 了,不需要額外找設定處理。

都匯入好後可以先去 Porject -> Build automatically 關閉這選項,還有指定編譯的環境這個要先設定。

eclpse_setup

按照上圖流程順序設定好編譯輸出的平台參數,再來就是設定輸出運作(Run)的參數。

到選單上找到 Run 與點選 Run Configurations 新視窗左側選擇 Eclipse Application 點選 install.app 修正 Arguments 分頁項目(如下圖, -os ${target.os} -arch ${target.arch} -nl ${target.nl} -consoleLog -console )後點選 Apply 儲存, Run 執行。

設定完成執行正確就會出現設定畫面:

idempiere_screen

到這步驟就是要準備好 PostgreSQL 來運作了,流程步驟可以參考前面筆記的「設定 PostgreSQL 章節」。

#先建立使用者角色
CREATE ROLE adempiere SUPERUSER LOGIN PASSWORD 'adempiere';
#再建立資料庫並賦予角色
CREATE DATABASE idempiere OWNER adempiere;
#開權限
ALTER ROLE adempiere SET search_path TO adempiere, pg_catalog;

有些移轉的資料庫中需要使用 UUID 功能,輸入下面指令打開 uuid 功能

psql -d idempiere -U adempiere -c 'CREATE EXTENSION "uuid-ossp"';

要注意,這邊的帳號密碼可以變,但資料庫名稱不要動,有些歷史淵源,可能會出問題XD

準備好資料庫後可以回到剛剛的設定介面對應輸入資料庫的連線資訊,並且 Test 測試看看,正確無誤就可以 Save 儲存設定。

啟動前準備

只是建立好環境與準備好連線的資訊,但是此時的 iDempiere 還是如同空白一樣,需要一些資料上的準備才會齊全。

#解壓縮預設資料庫
jar xvf org.adempiere.server-feature/data/seed/Adempiere_pg.jar
#匯入預設資料庫
psql -d idempiere -U adempiere -f Adempiere_pg.dmp

先將預設的資料庫匯入前步驟準備好的資料庫,再來就是給資料庫上 patch,補完一些階段性新增的內容/設計。

Mac 因為是用的匯入 Bash 腳本設計緣故,還需要安裝 coreutils 套件:

brew install coreutils

隨後就可以執行下方指令來套用資料庫的 Patch 檔案

bash RUN_SyncDBDev.sh

沒意外就是無錯誤的執行畫面。這個時候就可以正式啟動執行 iDempiere 啦!

啟動 iDempiere

找到選單上的 Run > Run Configurations 找到 Eclipse Application 選項中的 server.product ,先切換分頁到 Arguments,將畫面中「Use the -XstartOnFirstThread argument when launching with SWT 選項 取消勾選」,然後按下畫面中的 "Run" 正式啟動。

看到 console 畫面沒有錯誤,到 Welcome to Apache Felix Gogo 這段後,就代表起動成功,接著開啟瀏覽器,輸入網址: https://localhost:8443/ (預設的 SSL Port號)就可以看到進面畫面囉!

idempiere_screen

這邊 Mac 環境有踩一個大雷,問顧問 Ray 才知道怎解掉登入無限轉圈圈的問題。就是上述特別去 Arguments 畫面取消勾選 -XstartOnFirstThread 項目才可以正確執行。預設是有勾選起來的,如果有碰到問題才來這邊取消試試看,沒有就可能修正了!

後記

寫這篇筆記的時候剛好又碰到升級了 Mac OS 版本。然後 Eclipse 這邊也不知道為啥,就出現了 java.lang.ClassNotFoundException: org.eclipse.core.runtime.adaptor.EclipseStarter 這樣的錯誤,重新安裝過也還是有問題 org.eclipse.core.runtime.IPath.toFile()" because the return value of "org.eclipse.core.resources.IFile.getLocation()" is null

網路上所謂的 /Applications/Eclipse.app/Contents/MacOS/eclipse -clean 也無效。

最後是要完整的把專案重置一次,到 workspace 目錄下,把 .metadata 給刪除過重新處理一次本篇建置 Eclipse 環境的操作後才又正常。

整個建置一個開發編譯環境的流程真是比以前方便與簡潔不少了!


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[///////////____36%_________]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


文章
Filter
Apply Filters
Mastodon