Spring Boot2系にあげたときにやったことをまとめようと思います。関連記事 今回はGradleの話です。Upgrading your build from Gradle 4.x to 5.0を参考に作業しました。 これだけじゃなかったと思うので、思い出したら追記します。もうGradle 6出ているんですが、まだそんなに対応していないのでとりあえず5の話です。
4系の最新までバージョンをあげる
まず、4系の最新までバージョンをあげます。
build.gradleにこのように書いて、 ./gradlew wrapper
を実行します。
wrapper {
gradleVersion = "4.10.2"
distributionType = Wrapper.DistributionType.ALL
}
ビルド
次にビルドです。
./gradlew build
コマンドを実行すると、Gradle 5.0で非互換になる機能を利用しているとメッセージが出力されることがあります。
--warning-mode all
オプションをつけて実行すると詳細を確認することができます。参考
build.gradleの書き換え
大きな書き換えは、dependencies指定するcompilie
をimplementation
に書き換えることでした。4.7からcompileとかruntimeなどが非推奨になっています。参考implementation
に変更することで依存関係が伝播しなくなるため明確になり、結合度が低くなります。
fooモジュールとbarモジュールで構成されたマルチモジュールプロジェクトがあるとします。 build.gradle(fooモジュール)
dependencies {
implementation "com.fasterxml.jackson.dataformat:jackson-dataformat-csv"
}
build.gradle(barモジュール)
dependencies {
implementation project (":foo")
}
jackson-dataformat-csv
がimplementation
で指定されているので、barモジュールではjackson-dataformat-csv
の依存関係は伝播しません。
アーカイブファイルの名前を変更する
5.1からアーカイブファイルの名前を変更するときarchivesBaseName=hoge
を使うようになりました。 jar.baseName=hoge
は非推奨になりました。参考
おまけ
Gradle 3.x -> 4.10.2にするときにLombokが怒ってました。Lombok 1.18.2以上にしてねとのことでした。参考
Spring BootのGradleプラグイン
実行可能Jar(or War)作成タスクが bootRepackage
から bootJar
、bootWar
に変更になった。jar
タスクやwar
タスクは呼び出されない。参考