2014-05-15 71 views
0

我創建了一個Grails插件(grails create-plugin myplugin1),並注意到在創建Grails應用程序時通常沒有創建myapp1/grails-app/conf/BootStrap.groovy爲什麼Grails插件的BootStrap沒有執行?

我創建一個像這樣:

class BootStrap { 
    def init = { 
     println("Hello! The plugin is bootstrapping...") 
    } 

    def destroy = { 
    } 
} 

我然後包括與一個Grails應用插件(通過添加myplugin1作爲該應用的內BuildConfig.groovy一個插件)。當我發出grails run-app時,我沒有看到上面的println曾經執行過。

Grails插件不使用BootStrap.groovy?如果是這樣,我應該在什麼地方放置需要在加載插件時執行的「bootstrap」代碼?否則,如果我正確地做到了這一點,爲什麼我不能看到「你好!該插件是bootstrapping ...」的消息打印出來?

回答

2

插件的BootStrap從插件包中排除。你必須做你的初始化階段插件描述符,在一個或多個以下封鎖:

def doWithSpring = { 
    def appName = application.metadata.'app.name' 
} 

def doWithDynamicMethods = { ctx -> 
    // TODO Implement registering dynamic methods to classes (optional) 
} 

def doWithApplicationContext = { applicationContext -> 
    // TODO Implement post initialization spring config (optional) 
} 
+0

請記住,如果我們將所有的答案合併到@injecteer的答案中並刪除我們的答案?那樣我們對未來用戶的問題有一個確鑿的答案? –

+0

不,我不介意) – injecteer

0

代碼需要在啓動時運行在doWithApplicationContext關閉插件描述符應該去(MyPlugin1GrailsPlugin.groovy) 。

另外,稱之爲別的東西(例如MyPluginBootStrap.groovy),因爲它是隻有特定的類BootStrapUrlMappings當一個插件被打包的被排除在外,但任何類名結束BootStrap被認爲是引導假象。

+0

請注意,如果我們將所有回答合併到@injecteer的回答中,並刪除我們的回答?那樣我們對未來用戶的問題有一個確鑿的答案? –

2

一如既往,從寫得很好並保持documentation開始。

插件不包括Bootstrap.groovy。以下內容不包括在插件中(摘自文檔)。

  • 的grails-app/CONF/BootStrap.groovy中
  • 的grails-app/CONF/BuildConfig.groovy(雖然它被用於產生dependencies.groovy)
  • 的grails-app/CONF/Config.groovy中
  • 的grails-app/CONF/DataSource.groovy中(以及任何其他* DataSource.groovy中)
  • 的grails-app/CONF/UrlMappings.groovy
  • 的grails-app/CONF /彈簧/ resources.groovy
  • 一切都會薄/ web應用/ WEB-INF
  • 一切內/ web應用程序/插件/ **
  • 一切/試驗中/ **
  • /.svn/SCM管理文件/ CVS/

爲了在你的插件的啓動則需要使用doWithSpringdoWithApplicationContext(取決於你需要做什麼)的掛鉤到你的插件的運行時配置運行代碼。

documentation中解釋了所有這些以及更多內容。一個例子可能是:

// MyFancyPlugin.groovy 
    ... 
    def doWithApplicationContext = { appCtx -> 
     def sessionFactory = appCtx.sessionFactory 
     // do something here with session factory 
    } 
    ... 
相關問題