Grails插件依赖项在应用程序中不可用

时间:2014-10-31 01:08:44

标签: maven grails groovy buildconfig ggts

使用Grails 2.3.8在eclipse GGTS中创建了一个插件;标准插件,除了以下依赖项(rabbitmq)之外没有任何变化:

//BuildConfig (plugin)
plugins {
   compile(":rabbitmq:1.0.0")
   build(":release:3.0.1",
         ":rest-client-builder:1.0.3")         
}

插件依赖项已刷新,编译和打包,然后以'myplugin:mq:0.1'存储在本地maven存储库中,并进行验证。

创建了Grails项目,为项目添加了插件:

//BuildConfig (project)
plugins {            
   build ":tomcat:7.0.52.1"
   compile "myplugin:mq:0.5"  //<-plugin here

   compile ":scaffolding:2.0.3"
   compile ':cache:1.1.2'

   runtime ":database-migration:1.4.0"
   runtime ":jquery:1.11.0.2"     
}

依赖关系已成功刷新。

问题

我无法从myplugin:mq

的rabbitmq插件中引用rabbitmq库或依赖项

不确定为什么依赖项没有被应用程序继承,我没有使用exported = false或任何东西来抑制插件依赖。

试过

而不是eclipse,我切换到命令行(JDK 1.7 + 2.3.8,也尝试过2.3.7),手动清理,刷新,编译,但仍然无法解决rabbitmq类:

| Error Compilation error: startup failed:
C:\X-projects\ws-ggts_36\rest-api-doc-test\grails-app\controllers\org\raffian\restapi\controller\FundController.
 @ line 8, column 1.
   import org.springframework.amqp.rabbit.core.RabbitAdmin
   ^

Maven Local Deploy

我改变了群组和工件ID:

mvn install:install-file  
    -Dfile=grails-test-plugin-0.5.zip
    -DgroupId=myplugin
    -DartifactId=mq
    -Dversion=0.5
    -Dpackaging=zip
    -DgeneratePom=true

插件包怪异

仔细检查打包的插件后,ZIP只包含这些文件。我怀疑这是问题,因为缺少rabbitmq库,并且plugin.xml或插件描述符不包含对rabbitmq依赖项的引用,因此应用程序甚至不知道这些依赖项。但为什么插件不包含自己的依赖?

enter image description here

插件描述符

class TestPluginGrailsPlugin {
    // the plugin version
    def version = "0.5"
    // the version or versions of Grails the plugin is designed for
    def grailsVersion = "2.3 > *"
    // resources that are excluded from plugin packaging
    def pluginExcludes = [
        "grails-app/views/error.gsp"
    ]

    def title = "Test Plugin Plugin" // Headline display name of the plugin
    def author = "Your name"
    def authorEmail = ""
    def description = 'desc'
    def documentation = "http://grails.org/plugin/test-plugin"
    def doWithWebDescriptor = { xml ->}
    def doWithSpring = {}
    def doWithDynamicMethods = { ctx -> }
    def doWithApplicationContext = { ctx -> }
    def onChange = { event -> }
    def onConfigChange = { event -> }
    def onShutdown = { event -> }
}

1 个答案:

答案 0 :(得分:1)

要将Grails插件发布到本地maven repo,请使用以下命令:

grails maven-install

来自release插件,默认情况下可用于所有新创建的Grails插件。

最后,here is how如果需要,您可以修改插件的groupId