2011-08-01 6 views
2

「プラットフォーム」として使用される「マルチテナント」グレイズアプリケーションの開発を進めています。サイトが開発されます。Grailsイベント:ビルド時にディレクトリをコピーして、クリーンな「マルチテナント」デプロイメントエフェクトを取得する

「サイト」には、レイアウト、イメージ、およびページのgspが含まれます。

は今のところ、これらは、彼らの通常の場所でプロジェクト全体に広がっている例:

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

理想的には、彼らがすべてのように、サイトによって集中一つの場所になるだろう

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

私の現在の考え方は、Build.groovyスクリプトを使用してビルド時にいくつかのトリッキーを行うことで実現できます。 しかし、これを行うことが可能かどうかはわかりません。つまり、実行されるまで存在するディレクトリがわかりません。 (私も蟻の専門家ではない)

アイデア/提案はありますか?ありがとう!

includeTargets << grailsScript("_GrailsEvents") 

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

そして、私はあなたが非常によく似たものを使用することができたとします

答えて

1

私は、次のスクリプトを使用_Events.groovyという名前とスクリプトに位置しているが、私のビルドの前にファイルをコピーするために、あなたのGrailsアプリケーションの下のフォルダ。

関連のGrailsのドキュメントは、私はこれが正しい方向だと思うsuggestion-ためhere

+0

おかげで、私のつまずきポイントがディレクトリがあるかを知る方法..ですつまり、私は1〜は何のdirsを見つける必要があるだろうサイト/の下にある場合、2つのforeachディレクトリが見つかりました.3つ下のサブディレクトリを '本当の'場所にコピーします。あなたのコメントでは、私は2と3を行うことができるはずですが、まだ1について確信しています。 – Bobby

+0

イベントはすべてのプロジェクトメタデータへのアクセス権を持ち、groovyで完全に書かれています。そのフォルダに対してlistFiles()を使い、環境変数やプロジェクトのメタデータに応じて必要なサブフォルダを取得してください。 –

+0

ああ、新しいファイル( "$ {basedir}/sites")のようなものです。list()..うまくいくはずです。アドバイスをありがとう、それは私が必要とする可能性があります(grailsのメタデータ+ Javaファイルクラス)ので、私は必要なものを行うことができる必要がありますようだ。 – Bobby

関連する問題