1

Grails プロジェクトで、特定のプロジェクトごとに実装可能な「フック」を備えたバイナリ プラグインを構築したい

バイナリプラグイン構造

MyService (サービス)
  MyHookClassInterface myHookClass
  MyHookServiceInterface myHookService

MyHookClassInterface (インターフェース)
MyHookServiceInterface (インターフェース)

主なプロジェクト構造

ProjectHookClass は MyHookClassInterface (groovy クラス) を実装します
ProjectHookService は MyHookServiceInterface (サービス) を実装します

resources.groovy
豆 = {
  myHookClassInterface(ProjectHookClass)
  myHookServiceInterface(ProjectHookService)
}

このソリューションは、ソース プラグインを使用して魔法のように機能しますが、バイナリ モードで MyService の依存関係を注入しません。また、grails コンソールを開始すると、ctx.getBean('myHookClassInterface') が次の値を返します。

org.springframework.beans.factory.NoSuchBeanDefinitionException: 「myHookClassInterface」という名前の Bean が定義されていません
    org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:529) で
    org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1095) で
    org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:277) で
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) で
    org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:269) で
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) で
    org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1093) で
    org.springframework.beans.factory.BeanFactory$getBean.call で (不明なソース)
    org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42) で
    org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) で
    org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) で
    ConsoleScript0.run (ConsoleScript0:1) で

どうも

ファビオ

4

1 に答える 1

1

解決済み: この問題は、バイナリ プラグインの resources.groovy の存在に関連していました。この場合、grails の起動プロセスはプラグインとプロジェクトの resources.groovy をマージできません。可能であれば、プラグインの resources.groovy を削除するだけで十分です。

于 2012-06-22T08:45:26.257 に答える