2013-07-03 56 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")替换资源。 然后刷新依赖关系。它工作正常。