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

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

javaのビルドをgradleで行う:実践編2:静的ファイルの圧縮

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


f:id:treeapps:20180426142529p:plain

webアプリをビルドする際に必ず必要になる、静的ファイルの圧縮です。
htdocsに配置するための圧縮ファイルを生成してみましょう。

subprojects {
    task zipStatic(type: Zip) {
        from 'src/main/webapp/static'
        baseName = 'static'
    }
}

以下のフォルダ構成の場合、static.zip という名称で、staticフォルダがzip圧縮されます。

static/
├── css
│   ├── file1.css
│   ├── file2.css
│   └── lib
│       └── file3.css
└── js
    ├── file1.js
    ├── file2.js
    └── lib
        └── file3.js

zipタスクをsubprojects内に定義しているのは、親プロジェクトには基本的にビルドファイルしか置かないので、子プロジェクトのみにスコープを限定する、という意味があります。
このzipタスクによって生成される圧縮ファイルは以下に出力されます。

hoge-project/
 └── build
           └── distributions
                     └── static.zip

今回は static というフォルダ配下にjsやcssフォルダがありますが、webapp直下にjsやcssフォルダが有る場合もあると思います。

webapp/
├── css
│   ├── file1.css
│   ├── file2.css
│   └── lib
│       └── file3.css
└── js
    ├── file1.js
    ├── file2.js
    └── lib
        └── file3.js

その場合、webapp以下を全て対象にし、WEB-INFは除外、として対応します。
こうする事でwebapp直下に配置するrobots.txtやfaviconやウェブマスターツールのhtml等もzipファイル内に含める事ができます。

subprojects {
    task zipStatic(type: Zip) {
        from 'src/main/webapp/'
        exclude 'WEB-INF'
        baseName = 'static'
    }
}

ちなみにfromとexcludeは複数書くことができます。
沢山excludeしたければ、必要な分だけexcludeを書きましょう。

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ブログ