Grails 2.2.X插件开发 - 插件依赖

时间:2013-07-03 09:49:18

标签: grails grails-plugin grails-2.0

我完全不知道在Grails 2.2中如何以及在何处指定我自己的插件依赖项.X文档(Understanding Plugin Load Order)表示您可以在插件描述符类MyGrailsPlugin.groovy中指定依赖项。然而,“Upgrading from”章节说明只会考虑pom依赖关系。据我理解这个不清楚的语句,只有我将BuildConfig中的依赖项指定为将被使用的编译依赖项。

使用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。

所以问题是,我应该如何以及在何处指定我的依赖关系。

谢谢, 刁

2 个答案:

答案 0 :(得分:0)

实际上,我使用的是grails 2.1.0。在那里我用BuildConfig.groovy中的1.2(runtime ":resources:1.2")替换资源。 然后刷新依赖项。它运作良好。

答案 1 :(得分:0)

在阅读了有关Grails插件的更多信息后,我意识到这种行为是有道理的。如果插件指定了其依赖项的某个版本,并且您的项目指定了另一个版本,那么您就会发生冲突。您需要使用以下内容才能从插件中排除依赖性并使用您的:

runtime ":resources:1.2"

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

在这种情况下,插件创建者无法确保他的插件能够在较新版本的依赖项下正常运行。

关于资源插件依赖性。在我看来,最好使用以下

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

不包含插件的依赖项。这应该在您定义一些ApplicationResources.groovy时使用。如果您在插件中使用此插件中的某些内容,则不应排除资源插件...

在我看来,你应该在BuildConfig.groovy

中指定你的插件依赖项

希望在Grails版本中进一步改进这些内容。

Burt的进一步阅读: http://www.slideshare.net/burtbeckwith/plugins-21828912