私はGrailsのリソースプラグインが本当に好きで、Grails2.2のプロジェクトで広く使用しています。これを少し拡張して環境に対応させたいので、たとえば、実際には開発とテストにのみ必要なcertianjavascriptライブラリを本番環境にロードすることを回避できます。
Grailsのドキュメント(http://grails-plugins.github.com/grails-resources/guide/3.%20Declaring%20resources.html#3.2%20Resource%20artefacts)によると、これらの*Resources.groovyファイルは簡単なはずです。 grails-app / confフォルダーには、Groovy ConfigSlurperスクリプト(DataSource.groovyのように)が含まれているため、「environments」ブロック構文をサポートします。
私の問題は、このスタイルをドキュメンテーションが言っているように実装しようとすると、リソースプラグインを完全に壊すことができるだけだということです。IntelliJ IDEAが環境ブロックを認識しないことと相まって、これがどのように機能するのかわかりません。これが私が話していることです。ここでは、environmentsブロックがリソースインジェクション全体を破棄しています。
modules = {
stuff {
resource 'js/lib/script1.js'
resource 'js/lib/script2.js'
}
}
environments {
production {
stuff {
resource 'js/lib/script1.js'
}
}
}
ここでは、本番環境で実行すると、特定のスクリプトを「スタッフ」リソースから明確に除外するモジュールを作成しようとしています。誰かがこれを行うための正しい方法を話すことができれば、私は大いに感謝します!前もって感謝します!
アップデート!!!
OK、私は環境に配慮したリソースを設定する正しい方法をいじって見つけたと思います。私の唯一の問題は、デフォルトのリソースをバンドルに含める方法を理解することです。これにより、環境間でこのような重複がすべて発生することはありません。次の設定があるとしましょう。
environments {
development {
modules = {
stuff {
resource 'js/script1.js'
resource 'js/script2.js'
resource 'js/OnlyForDevelopment.js'
}
}
}
production {
modules = {
stuff {
resource 'js/script1.js'
resource 'js/script2.js'
}
}
}
}
script1とscript2を「stuff」リソースバンドルのデフォルトとして設定できるように、これを記述する適切な方法は何でしょうか。これにより、環境ブロックごとに1回ずつ、2回書き出す必要がなくなります。これはほんの小さな例ですが、環境ブロックごとにすべての共有リソースを複製する必要はありません。これに対する優雅な解決策はありますか?環境対応バージョンが追加するもののベースとなるテンプレート「スタッフ」リソースを設定できる「汎用」リソースブロックはありますか?その場合、環境対応リソースに、dependsOnステートメントを含む汎用ブロックのリソースを含めることができますか?私はこれらのことを実現しようとしましたが、無駄になりました。