2016-11-01 208 views
2

我正在研究一個Grails插件,其主要貢獻是taglib。在Grails 3.1.11中,它工作正常。我也有一個簡單的Grails應用程序來測試插件。輸入Grails 3.2.2。升級插件無法從Grails 3.1.11升級到3.2.2

遷移插件和應用3.2.2插件後顯示無生命跡象。插件doWithApplicationContext閉包在應用程序啓動時不再執行。 gsp:s找不到taglib。我通過使用Grails 3.2.2創建一個新的插件和應用程序來完成遷移,然後填寫源代碼。

對不起,這個模糊的問題,但我要拉什麼字符串找出什麼是錯的?

編輯1:是的,我做了仔細的檢查,有應用程序依賴於插件的一個不存在的版本,並得到了預期的衝突。所以並不是說插件完全與應用程序分離。

編輯2:包裝上grails.pluginsorg.grails.plugins警告消息出現設置調試日誌記錄後。它來自org.grails.plugins.CorePluginFinder。它無法找到插件描述符(... Plugin.groovy)。我檢查了插件jar,在一個以BOOT-INF爲根的文件層次結構中找到了插件描述符類。顯然,插件加載器沒有考慮到這個層次。我以爲我看到一個Grails錯誤,因爲我不知道Boot重新打包。我在這裏添加了一個帖子,但是在得到Graeme的回答之後,我刪除了這篇文章,因爲它減少了注意力。

+0

實在是沒有解決的問題,而偉大的方式知道如何寫東西。有很多事情可能是錯誤的。 –

+0

我會從創建一個全新的3.2.2插件開始,並將其構建文件複製到您的升級項目中,以確保所有依賴關係都在那裏同步。 –

+0

我也會downvote這樣一個愚蠢的問題:)非常希望在Grails doco是一個關鍵的內部軟件包列表設置更詳細的日誌級別。在Grails 2中,日誌配置默認帶有這樣的列表。在這種情況下,應用程序開始沒有投訴,仍然無法正常工作。一個更好的問題是,給我一些日誌設置來解決問題。我遇到了困難。 – sodastream

回答

4

你們看到的是,如果你在一個插件,則bootRepackage任務運行的運行gradle assemble當您計劃使用該插件從應用程序重新打包是不是你想要的是什麼插件JAR作爲一個可運行的JAR 。

如果您只是運行gradle publishgradle publishToMavenLocalgradle jar那麼您將得到未被Boot重新打包的JAR文件。據我所知,這不是從Grails 3.1的變化。

您還可以禁用引導在插件build.gradle一起重新包裝,如果你不打算使用該插件作爲一個實際的應用程序或可運行的JAR文件:

bootRepackage.enabled = false 
+0

非常感謝,這是正確答案,我已經測試過了。但是,顯然有些事情已經發生了變化,在3.2.2下重複了與3.1相同的構建/安裝步驟。11帶來不同的結果。這可能是一個文檔問題。 3.2.2指南說運行'grails install'(18.1安裝本地插件)。但是,該命令不存在。 'gradle install'存在,但顯然調用Boot重新打包,'gradle publishToMavenLocal'不重新打包。 – sodastream