文系プログラマによるTIPSブログ

文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。

javaのビルドをgradleで行う:実践編3:jspの文字列置換(ReplaceTokens)

Gradle実践シリーズその3です〜


f:id:treeapps:20180426142529p:plain

今回はantでよく使われるreplaceをgradleで行なってみます。

htmlやjspでjsをincludeする時、タイムスタンプをパラメータに付与して、ビルド毎にキャッシュを入れ替える処理をやる事があります。

    <script type="text/javascript" src="http://platform.twitter.com/widgets.js?t=20130606235611"></script>

こうすると、ビルドしたタイミングのタイムスタンプがパラメータに付与され、デプロイ毎にクライアント(ブラウザ)のキャッシュをリフレッシュさせる事ができます。
antでこれをやる場合、まずhtmlまたはjspに以下を書きます。

    <script type="text/javascript" src="http://platform.twitter.com/widgets.js?t=TIMESTAMP"></script>

続いてbuild.xmlです。これをタスクとして実行すると、文字列置換が行われます。

<tstamp>
    <format property="now" pattern="yyyyMMddHHmmss" />
</tstamp>
<replace dir="${web.dir}" token="TIMESTAMP" value="${now}">
    <include name="**/*.jsp"/>
    <include name="**/*.html"/>
</replace>

ではこれをgradleで書いてみましょう。

    war {
        def now = new Date().getTime().toString()
        // jspのtoken置換
        from(webAppDir) {
            include '**/*.jsp'
            filter(ReplaceTokens, tokens:['TIMESTAMP': now])
        }
    }

gradleの場合はwarタスクの際にリプレースします。
これでwarにpackageする際にリプレースを行う事ができます。

しかしここで注意点があります。
実は以下はリプレースされません。

    <script type="text/javascript" src="http://platform.twitter.com/widgets.js?t=TIMESTAMP"></script>

gradleの規約?で、以下のように書かないと置換されません。

    <script type="text/javascript" src="http://platform.twitter.com/widgets.js?t=@TIMESTAMP@"></script>

@で挟んだ部分のみ置換対象となるので、注意しましょう。

javaのビルドをgradleで行う:調査編1:maven・SBTとの違い - 文系プログラマによるTIPSブログ
javaのビルドをgradleで行う:調査編2:依存から1行で特定jarを除外! - 文系プログラマによるTIPSブログ
javaのビルドをgradleで行う:調査編3:seasar系の依存の注意点 - 文系プログラマによるTIPSブログ
javaのビルドをgradleで行う:調査編4:Groovy Librariesの罠 - 文系プログラマによるTIPSブログ



javaのビルドをgradleで行う:実践編1:jsとcssのcombineとminify - 文系プログラマによるTIPSブログ
javaのビルドをgradleで行う:実践編2:静的ファイルの圧縮 - 文系プログラマによるTIPSブログ
javaのビルドをgradleで行う:実践編3:jspの文字列置換(ReplaceTokens) - 文系プログラマによるTIPSブログ
javaのビルドをgradleで行う:実践編4:あれどうやるの?の疑問と自己解決 - 文系プログラマによるTIPSブログ
javaのビルドをgradleで行う:実践編5:マルチプロジェクト時のprovidedCompileについて - 文系プログラマによるTIPSブログ
javaのビルドをgradleで行う:実践編6:高速に実用的な実行可能jarを生成する - 文系プログラマによるTIPSブログ