2011-08-01 2 views
2

나는 '플랫폼'으로 사용되는 일종의 '멀티 테넌트'grails 앱을 개발 중입니다. 사이트가 개발 될 것입니다.Grails Events : 빌드시에 디렉토리를 복사하여 깨끗한 '멀티 테넌트'배치 효과를 얻으십시오.

'사이트'에는 레이아웃, 이미지 및 페이지 gsp가 포함됩니다.

은 지금이가 정상 위치에서 프로젝트에 분산 된 예 :

/grails-app/views/layout 
/grails-app/views/<site> 
/web-app/images/ 

이상적으로, 그들은 모두 같은 사이트에서 중앙 집중식 한 장소에있을 것

/sites/<site>/layout 
/sites/<site>/pages/ 
/sites/<site>/imagtes 

현재 나의 생각은 Build.groovy 스크립트로 작성하고 빌드시에 개미를 다루는 것입니다. 하지만이 규칙을 복사하는 것이 가능한지 확실하지 않습니다. 즉, 실행될 때까지 존재하는 디렉토리를 모릅니다. (나도 개미 구루)

아이디어/제안? 감사!

답변

1

나는 다음과 같은 스크립트를 사용 _Events.groovy 이름과 스크립트가 Grails 애플리케이션에서 폴더에있는 내 빌드하기 전에 파일을 복사 한 :

includeTargets << grailsScript("_GrailsEvents") 

eventSetClasspath = { msg -> 
    println "Custom Configuration" 
    ant.copy(todir:classesDirPath) { 
     fileset(dir:"${basedir}/config") 
    } 
} 

을 그리고 난 당신이 매우 비슷한 사용할 수도있을 것 같군요.

관련 Grails의 문서는 내가이 올바른 방향으로 생각합니다 suggestion-에 대한 here

+0

감사합니다,하지만 내 장애물 점은 디렉토리가 .. 즉 내가 무엇을 DIRS를 찾을 수 1에이 필요할 것입니다 무엇을 알고 어떻게 사이트/아래에있는 경우, 2- foreach dir이 발견되면, 그 아래의 서브 디렉토리를 '실제'위치에 복사하십시오. 귀하의 의견으로 나는 2와 3을 할 수 있어야하지만 1은 확실하지 않습니다. – Bobby

+0

이벤트는 모든 프로젝트 메타 데이터에 액세스 할 수 있으며 완전히 그루비로 작성됩니다. 해당 폴더에 대해 listFiles()를 사용하고 환경 변수 또는 프로젝트 메타 데이터에 따라 필요한 하위 폴더를 선택하십시오. –

+0

아아아, 그러면 새로운 파일 ("$ {basedir}/sites"). list() ..처럼 잘 작동해야합니다. 조언 주셔서 감사합니다, 내가 필요로 할 수있는 모든 것 (grails 메타 데이터 + 자바 파일 클래스), 그래서 내가 원하는 것을 할 수 있어야합니다 보인다. – Bobby

관련 문제