3

我们的一些 CSS 文件包含可能因部署位置(开发、QA、产品)而异的参数。例如:

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

以避免硬编码特定 CDN 或本地托管 Dojo 安装的路径。

当部署脚本将 webapp 的内容复制到 Tomcat webapps 目录中时,这些值会以文本形式替换为实际值。这样,相同的部署存档文件(包含其他配置的 WAR + TAR 文件)可以部署到 dev、QA 和 prod,并使用特定于环境的配置文件提供的不同参数。

但是,我想让 WAR 的内容(包括模板化的 CSS 文件)独立于这个内部部署脚本。由于我们无法真正控制部署脚本,所以我能想到的就是#DOJO_PATH#在应用程序的 context.xml 中将 Tomcat 配置为环境变量等,并使用 Tomcat 在运行时将这些参数插入 CSS。

我可以将 CSS 文件制作成生成的 JSP,但对我来说似乎有点难看。此外,每个应用程序部署只需要进行一次替换,因此使用 JSP 重复动态生成样式表将是相当浪费的。

有没有人有任何替代的想法或工具可以用于此?我们致力于 Tomcat 并在部署或运行​​时(即,不是在构建时)替换这些参数。

4

2 回答 2

1

你现在正在做的事情对我来说似乎是最好的解决方案。

您可以轻松地将这些文件编写为由 Servlet 提供服务,并使用诸如 Freemarker 之类的视图呈现技术(甚至是自定义编写的模板系统来替换关键字)动态替换它们的内容,但这样做会产生相关成本。

如果它们在运行时真正是静态的,Tomcat 可以更有效地为这些资源提供服务。此外,如果您在 Tomcat 服务器前面使用 Apache,那么您可以让 Apache 为静态内容提供服务,而无需访问您的 Tomcat 服务器,从而使您的 JVM 线程池更小且竞争更少。

于 2010-04-27T14:20:18.013 回答
0

您还可以有一个指向特定环境配置文件的环境变量,并让一些启动脚本在此时为您将其插入在一起。这样,命令行就不会失控。

于 2010-04-27T14:22:48.650 回答