Spring Bootでwarから動的にファイルを除外する
作成日時:2025-08-04
更新日時:2025-08-04
表題通り。
納品時などにおいて、warに含めてはならないファイルがあったり。
ビルド時に除外するように設定できる。
基本
build.gradleに以下の設定を追加。
war {
rootSpec.exclude('**/foo/**')
archiveFileName = 'something.war'
}
rootSpec.exclude
で対象のファイル/ディレクトリをwarから除外できる。
応用
Groovyを使えば動的に削除対象を設定可能。
ファイルやプロパティなどから削除対象を定義したりできる。
以下、サンプル。
ケース:
fooとbarディレクトリをwarから除外する。
ただし、ビルド時のプロパティfizz
に指定されたディレクトリは除外しないこととする。
// 除外対象ディレクトリリスト
def excludeTargetList = ['foo', 'bar']
// プロパティを取得。指定されたディレクトリは除外対象とする。
if (project.hasProperty('fizz')) {
excludeTargetList.removeIf {it == project.getProperty('fizz')}
}
war {
// 除外対象ディレクトリリストの内容をもとに除外設定
excludeTargetList.each { target ->
rootSpec.exclude('**/${target}/**')
}
archiveFileName = 'something.war'
}
下記のコマンドでビルドすれば、barディレクトリのみがwarから除外される。
gradlew war -Pfizz=foo