【发布时间】:2012-11-10 23:01:40
【问题描述】:
我想在构建时在静态资产(html、css、js)中替换一些简单的变量(例如版本号或 CDN URL 前缀)。 Play 2.x 本身无法做到这一点,但也许有一个通用的 sbt 任务可以在文件中进行变量插值?
【问题讨论】:
标签: playframework playframework-2.0 sbt
我想在构建时在静态资产(html、css、js)中替换一些简单的变量(例如版本号或 CDN URL 前缀)。 Play 2.x 本身无法做到这一点,但也许有一个通用的 sbt 任务可以在文件中进行变量插值?
【问题讨论】:
标签: playframework playframework-2.0 sbt
您可以使用sbt-editsource 插件。它对源文本进行简单的变量替换。您需要将源目录设置为静态资产所在的位置。这是detailed guide。
【讨论】:
虽然我不知道您的需求,而且可能 Kim 的回答已经足够好了,您也可以通过 application.conf + 小解析方法使 CDN 可配置:
conf/application.conf:
cdn.cdn1="http://cdn1.domain.tld/"
cdn.cdn2="http://cdn2.domain.tld/"
Application.java
public static String cdnResource(String cdnId, String filePath) {
return Play.application().configuration().getString("cdn."+cdnId) + filePath;
}
用法:
<script src='@Application.cdnResource("cdn1", "bootstrap/js/bootstrap.min.js")' type="text/javascript"></script>
...
<img src='@Application.cdnResource("cdn2", "template/images/logo.png")' alt="" >
【讨论】: