2013年1月16日

Grails 2.2 安裝 Local Plugin 的方法

Grails 2.2 若使用 install-plugin 安裝 Local Plugin 的 ZIP 檔案,會出現 Dependency Error。

以 spring-security-facebook 這個 Plugin 為例。

git clone git://github.com/splix/grails-spring-security-facebook.git
cd grails-spring-security-facebook
grails package-plugin

可以產生:

grails-spring-security-facebook-0.10.3.zip

不過在自己的專案中,使用 install-plugin 會發生錯誤。

grails install-plugin ../grails-spring-security-facebook/grails-spring-security-facebook-0.10.3.zip

在這個討論串有說明原因:

http://jira.grails.org/browse/GRAILS-9006

錯誤訊息包含:

Environment set to development.....
:: problems summary ::
:::: WARNINGS
::::::::::::::::::::::::::::::::::::::::::::::
:: UNRESOLVED DEPENDENCIES ::
::::::::::::::::::::::::::::::::::::::::::::::

目前解決方法,是利用 maven-install 先安裝 Plugin 到 Local Maven Repository。

在 plugin 資料夾下,先做 maven-install。

*建議先改 SpringSecurityFacebookGrailsPlugin.groovy 的版號,例如用 0.10.3rc 這樣。

grails maven-install

就會將打包好的檔案保存到 ~/.m2。

先在專案中,grails-app/conf/BuildConfig.groovy 確認有 mavenLocal() 這個 repositories 設定。

然後在 plugins 設定區增加 dependency。

plugins {
    compile ":spring-security-facebook:0.10.3rc"
}

在 Grails 2.2.x 之後的版本,已經不建議用 install-plugin 方案安裝。取代的方式就是在 BuildConfig.groovy 設定 Grape Style 的 dependency 宣告。

另外,打包 Plugin 還牽涉到 Grails 版本問題。如果專案和外部 Plugin 用不同的 Grails 版本,建議在打包 Plugin 時,先利用 GVM Tools 將 Grails 版本切換成 Plugin 原指定的版本,這樣可以避免很多建置階段的問題。

沒有留言:

張貼留言

lyhcode by lyhcode
歡迎轉載,請務必註明出處!