2014-05-15 2 views
0

Grails 플러그인을 만들었고 (grails create-plugin myplugin1) Grails 앱을 만들 때 일반적으로 얻는 것처럼 myapp1/grails-app/conf/BootStrap.groovy이 생성되지 않았 음을 알았습니다. (응용 프로그램의이 BuildConfig.groovy 내부 플러그인으로 myplugin1을 추가하여)Grails 플러그인의 BootStrap이 실행되지 않는 이유는 무엇입니까?

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

    def destroy = { 
    } 
} 

내가 다음 Grails의 앱 플러그인을 포함

는 그래서 같은 하나를 만들었습니다. grails run-app을 발행 할 때 위의 println이 실행되지 않습니다.

Grails 플러그인을 사용하지 마십시오 BootStrap.groovy? 그렇다면 플러그인을로드 할 때 실행해야하는 "부트 스트랩"코드는 어디에 두어야합니까? 그렇지 않은 경우 위의 작업을 올바르게 수행 한 경우 "안녕하세요! 플러그인이 부트 스트랩하는 중 ..."메시지가 출력됩니다.

답변

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를) . 이 플러그인을 포장 할 때 제외되는 경우에만 특정 클래스 BootStrapUrlMappings하지만 같은

는 다른 방법, 다른 것 (예를 들어, MyPluginBootStrap.groovy)를 호출 이름이 BootStrap을 종료 부트 스트랩 유물로 간주되는 모든 클래스입니다.

+0

@ 인젝터의 대답에 모든 답을 결합하고 우리를 삭제하면 마음에 드십니까? 그런 식으로 미래의 사용자를위한 질문에 대한 확실한 답을 얻었습니까? –

2

항상 그렇듯이 매우 잘 작성되고 유지 관리 된 documentation으로 시작하십시오.

플러그인에는 Bootstrap.groovy가 포함되어 있지 않습니다. 다음은 플러그인에서 제외됩니다 (문서에서 가져옴).

  • Grails의-앱/CONT/BootStrap.groovy
  • Grails의-앱/CONT/BuildConfig.groovy
  • grails-app/conf/Config.groovy 파일 (이를 dependencies.groovy를 생성하는데 사용되지만)
  • grails-app/conf/DataSource.groovy에 (그리고 다른 DataSource.groovy에 *)
  • 를 grails-app/conf/UrlMappings.groovy
  • Grails의-앱/CONT/스프링/resources.groovy
  • 모든 것 얇은/웹 응용 프로그램/WEB-INF
  • 모든/웹 응용 프로그램/플러그인/**
  • 모든 내/테스트 내/** /.svn/
  • SCM 관리 파일/CVS/당신이 doWithSpring 또는 doWithApplicationContext (당신이해야 할 일에 따라)를 사용하여 플러그인의 런타임 구성에 연결해야 플러그인의 시작에 코드를 실행하기 위해

.

이 모든 내용은 documentation에 설명되어 있습니다. 예 : 다음과 같을 수 있습니다 :

// MyFancyPlugin.groovy 
    ... 
    def doWithApplicationContext = { appCtx -> 
     def sessionFactory = appCtx.sessionFactory 
     // do something here with session factory 
    } 
    ... 
관련 문제