3

一部の CSS ファイルには、展開場所 (dev、QA、prod) によって異なるパラメーターが含まれています。例えば:

 background: url(#DOJO_PATH#/dijit/themes...)

特定の CDN またはローカルにホストされている Dojo インストールへのパスをハードコーディングするのを避けるため。

これらの値は、webapp のコンテンツを Tomcat webapps ディレクトリにコピーするときに、デプロイメント スクリプトによって実際の値にテキストで置き換えられます。このようにして、環境固有の構成ファイルによって提供されるさまざまなパラメーターを使用して、同じ展開アーカイブ ファイル (他の構成を含む WAR + TAR ファイル) を dev、QA、および prod に展開できます。

ただし、WAR の内容 (テンプレート化された CSS ファイルを含む) を、この社内展開スクリプトから独立させたいと考えています。デプロイ スクリプトを実際に制御することはできないため、Tomcat を#DOJO_PATH#アプリケーションの context.xml 内の環境変数として構成し、実行時に Tomcat を使用してそれらのパラメーターを CSS に挿入することしか考えられません。

CSS ファイルを生成された JSP にすることはできましたが、少し見苦しく思えます。さらに、置換はアプリケーションのデプロイメントごとに 1 回だけ行う必要があるため、JSP を使用してスタイルシートを繰り返し動的に生成するのはかなり無駄です。

これに使用する代替のアイデアやツールはありますか? 私たちは、Tomcat にコミットし、デプロイ時または実行時 (つまり、ビルド時ではありません) にこれらのパラメーターを置換することに取り組んでいます。

4

2 に答える 2

1

今あなたがしていることは、私にとって最善の解決策のように思えます。

これらのファイルをサーブレットによって提供されるように簡単に記述し、Freemarker などのビュー レンダリング テクノロジを使用してそれらのコンテンツを動的に置き換えることができます (または、キーワードを置き換えるカスタム作成テンプレート システムも使用できますが、これにはコストがかかります。

これらのリソースが実行時に完全に静的であれば、Tomcat はこれらのリソースをより効率的に提供できます。また、Tomcat サーバーの前に Apache を配置すると、Tomcat サーバーにアクセスすることなく Apache に静的コンテンツを提供させることができるため、JVM スレッド プールを小さく保ち、競合が少なくなります。

于 2010-04-27T14:20:18.013 に答える
0

また、環境固有の構成ファイルを指す単一の環境変数を用意し、その時点でいくつかの起動スクリプトをプラグインすることもできます。そうすれば、コマンド ラインが制御不能になることはありません。

于 2010-04-27T14:22:48.650 に答える