Spring Bootを使用しているプロジェクトでは、spring-boot-starter-security などのStarterをGradleで利用することで、使用するSpringバージョンに対応したライブラリ群を一括で依存関係としているケースが多く見られます。
Starterは、指定されたSpring Bootのバージョンに適合するライブラリのバージョンを自動で解決・ダウンロードするため、開発効率が向上します。
バージョン確認が必要になるケース
一方で、依存関係の詳細やバージョンを明示的に把握したい場合、あるいは本当に想定したバージョンのライブラリがインストールされているかを確認したい場面もあります。
以下のサイトでは、各Spring Boot Starterのバージョンと、そのバージョン固有のCompile Dependencies(依存ライブラリ)が確認できます。
https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-security
加えて、実行時に実際のライブラリバージョンを確認したい場合、以下のコードのように Spring Security のバージョンを取得してコンソール出力することが可能です。
このコードは、Spring Securityのバージョン情報を取得し、コンソールに出力します。
ライブラリのバージョンを変更したのに、バージョンの変更が確認出来ない場合はGradleのキャッシュをクリアして下さい。
import org.springframework.security.core.SpringSecurityCoreVersion; public class SpringSecurityVersionExample { public static void main(String[] args) { //Spring Securityのバージョンを出力する String springSecurityVersion = SpringSecurityCoreVersion.getVersion(); System.out.println("Spring Security Version: " + springSecurityVersion); } }
なお、依存ライブラリのバージョンを変更しても、バージョン情報が更新されない場合は、Gradle のキャッシュが影響している可能性があります。
その場合は、キャッシュをクリアして再ビルドしてください。
## キャッシュをクリアして再ビルド ./gradlew clean build --refresh-dependencies
Gradle のキャッシュ問題はよくあるので、--refresh-dependencies を明記しています。
補足的な意見
チーム運営の観点から Starter の是非については賛否が分かれるところですが、個人的には、使用しているライブラリとそのバージョンを明確に理解・管理することが本来あるべき形だと考えています。
しかし、プロジェクトの規模やチーム体制、運用レベルによっては、Starter による依存管理が効果的な場合もあります。
特に、依存関係が複雑化して管理しきれない状況(「ゴミ屋敷プロジェクト」)では、Starter の導入により構成の簡素化と安定性の向上が期待できます。
技術的補足と改善ポイント
SpringSecurityCoreVersion.getVersion() は一部のバージョンで正しく動作しない場合があります(戻り値が null になることがある)。
ライブラリの MANIFEST.MF を直接参照する、またはクラスパスの JAR を inspect するツールを併用する手もあります。