0

我很困惑如何以及在哪里指定我自己的插件依赖项在 Grails 2.2.X 文档(Understanding Plugin Load Order)说你可以在插件描述符类 MyGrailsPlugin.groovy 中指定依赖项。然而,“升级自”一章说只考虑 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。

所以问题是,我应该如何以及在哪里指定我的依赖项。

谢谢,马特奥

4

2 回答 2

0

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

于 2013-07-03T11:21:55.683 回答
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

于 2013-07-10T08:08:48.933 回答