5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SpringBootの組み込みTomcatのバージョンだけアップする方法

Posted at

背景

過去に何度かTomcatに致命的な脆弱性が見つかって対策パッチを適用したりバージョンを上げたりして対応することが何度かあったのだが、SpringBootみたいに組み込まれているTomcatのバージョンだけを上げたいような場合、どうやればいいのか気になったので調べてみた。

前提環境

バージョンを上げる前のバージョンは以下のとおり。

  • SpringBoot 2.3.0.RELEASE
  • Tomcat 9.0.35
  • Gradle 5.6
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.3.0.RELEASE)


INFO 1431 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
INFO 1431 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.35]

tomcat.versionを設定するだけでいい

結論から言うとbuild.gradleに以下の記述を足すだけで良い。どうやらSpringBootはspring-boot-dependenciesという部品がバージョン管理しているようで、このspring-boot-dependenciesにはバージョンプロパティが用意されていて、この値を変更するだけでTomcatだけでなく他の依存ライブラリのバージョンも上げることができるようだ。

build.gradle
ext['tomcat.version'] = '9.0.50'

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.3.0.RELEASE)

INFO 3146 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
INFO 3146 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.50]

その他注意事項

バージョンプロパティに値を設定するだけでバージョンを変えること自体は容易だが、これによって依存していた処理が動かなくなることも考えられるので、動作確認はちゃんと行ったほうが良い。
また、今回はGradle5.6で試したが、公式の記述にあるように今回のやり方でバージョンを上げるには Gradle6.3以降が推奨されているので、もしGradleのバージョンが足りていないなら、Tomcatのバージョンを上げる前にGradleのバージョンを上げなければならない。あるいはGradleの前提としているJDKバージョンも上げないといけないかもしれない。となると、開発用のJavaバージョンと開発ツールのJavaバージョンをあわせているプロジェクトでは、このあたりの開発環境の影響も考慮したほうがいいだろう。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?