2013-07-03 81 views
0

我完全困惑在Grails 2.2.X中如何以及在何處指定我自己的插件依賴關係文檔(Understanding Plugin Load Order)表示您可以在插件描述符類MyGrailsPlugin.groovy中指定依賴關係。而「Upgrading from」一章說只考慮pom依賴關係。正如我理解這個不清楚的聲明,只有當我將BuildConfig中的依賴項指定爲編譯依賴項時纔會使用它。Grails 2.2.X插件開發 - 插件依賴關係

使用dependsOn在我的主應用程序中帶來了一些問題(無法解決插件中的依賴關係,即使它存在 - 我認爲一些通配符問題「def dependsOn = ['jquery-ui':」*> 1.8.24 「]」)。

插件依賴對我的作品是如何指定它在BuildConfig(爲myplugin)的唯一方法:

grails.project.work.dir = 'target' 

grails.project.dependency.resolution = { 
    inherits 'global' 
    log 'warn' 

    repositories { 
     grailsCentral() 

     mavenLocal() 
     mavenCentral() 
    } 

    plugins { 
     build(':release:2.2.1', ':rest-client-builder:1.0.3') { 
     export = false 
     } 
     compile ":resources:1.1.6" 
     compile ":jquery:1.8.3" 
     compile ":jquery-ui:1.8.24" 
    } 
} 

但我的應用程序使用的1.2版本的資源插件。當我運行應用程序時,它總是詢問我是否想升級到1.1.6。

所以問題是,我應該如何以及在哪裏指定我的依賴關係。

感謝, 刁

+0

如果一個Grails應用程序/插件Maven化的,是在這種情況下,相關性從POM redolved。在你的情況下,因爲你沒有提到任何我認爲的maven,你應該對BuildConfig很好。最好的例子就是在你面前,資源插件在BuildConfig中版本爲1.1.6,所以它總是要求升級。將其更改爲1.2。 – dmahapatro

回答

0

在閱讀了關於Grails插件的更多信息後,我意識到這種行爲是有道理的。如果插件指定了它的依賴項的某個版本,並且你的項目指定了一個不同的版本,那麼你就會發生衝突。您需要使用以下步驟,以便從插件排除dependecy並使用你的:

runtime ":resources:1.2" 

compile ':my-plugin:2.0.8', { 
    exclude 'resources' 
} 

在這種情況下,插件製作者不能保證他的插件將依賴新版本正常運行。

關於資源插件依賴關係。在我看來,最好使用以下內容:

compile ":resources:1.1.6" { 
    export = false 
} 

它不會包含插件的依賴關係。這應該只在您定義一些ApplicationResources.groovy時使用。如果您使用的東西,從這個插件在你的插件,你不應該排除資源插件...

在我看來,你應該在BuildConfig.groovy指定插件依賴性

希望這些東西會在進一步的Grails的版本中改進。

從伯特進一步閱讀: http://www.slideshare.net/burtbeckwith/plugins-21828912

0

其實,我使用Grails 2.1.0。在我用BuildConfig.groovy 1.2(runtime ":resources:1.2")替換資源。 然後刷新依賴關係。它工作正常。