個人很在意每一個確定要散佈的套件必須包含重新散佈時所需的完整設定資訊,甚至最好將 IDE 工具的設定一起包進去更好。這樣的做法可以當成是一種原始檔備份作業,只需從正式環境中下載該散佈包後即可進行修正並重新發佈。
使用 Ant 進行應用系統部署的原因
先前會使用 Ant 做專案部署工具的主因在於一個人性的重大弱點:懶;而另一方面則是為了避免人為失誤所導致的錯誤部署動作。當專案愈來愈多時卻發現一個問題:每一個專案會包含自己的相依性類別庫。每個專案各玩各的好處是避免相互干擾,但壞處呢?
同一個 jar 檔分別存放在許多專案目錄下。
各專案間對同一個 jar 類別庫卻可能混有多種版本,造成維護上的困擾。
使用 Maven 管理專案的目的
就因為 Ant 必須自行管理相依性類別庫的關係,所以在看過 跑吧!電腦 (Run!PC) 對 Maven 的說明後即覺得這是一個可以解套的新工具。換句話說,當我必須將專案移交給他人時,不必再告訴交接者必須注意類別庫各版號間有無不同,更不必在一個散佈套件包中註解(在 jar 檔中)或附加(在 war 檔內)該專案必須使用的所有類別庫資訊。
實情是?
不過現實總難盡如人意,我發現只要某一個類別庫有特別的 License 限制時,我們將無法從公開的資源庫中下載到指定的 jar 檔,如 javamail 及 jndi 各 interface 等等。有人會說這可以透過自訂 Maven Local Repository 本地資源庫來解決,但個人認為這是未考慮到交接者不一定熟悉 Java 各項設定的自私想法,換句話說這無法滿足個人對散佈套件的要求。
沒有留言:
張貼留言