Spring Boot 2.7 → 3.2 Jakarta Migration Skill
SkillSecurityMigrate a Java 8/Spring Boot 2.7 project to Java 21/Spring Boot 3.2 with comprehensive handling of namespace changes, security config, Hibernate 6, JJWT 0.12.x, and RestClient migration.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Spring Boot 2.7 → 3.2 Jakarta Migration Skill skill
What this skill tells your AI
The instructions your AI receives, as published by openlair/openskill in tasks-evolved/spring-boot-jakarta-migration/environment/skills/evo-spring-boot-jakarta-migration/SKILL.md and read by ahel’s review.
Purpose
Migrate a Java 8/Spring Boot 2.7 user management microservice to Java 21/Spring Boot 3.2, covering all layers of the application stack.
Key Migration Areas
- pom.xml: Update parent to 3.2.x, java.version to 21, maven-compiler-plugin with
-parameters, replace jjwt 0.9.x with modular 0.12.x, remove jaxb-api - Jakarta namespace: Replace javax.persistence → jakarta.persistence, javax.validation → jakarta.validation, javax.servlet → jakarta.servlet. Preserve javax.crypto, javax.sql, javax.net (Java SE packages)
- Spring Security 6: Remove WebSecurityConfigurerAdapter, use SecurityFilterChain bean, Lambda DSL, authorizeHttpRequests + requestMatchers, @EnableMethodSecurity
- JJWT 0.12.x API: Migrate from
Jwts.parser().setSigningKey()toJwts.parser().verifyWith().build().parseSignedClaims(), fromJwts.builder().signWith(SignatureAlgorithm.HS512, key)toJwts.builder().signWith(key) - Hibernate 6: Remove versioned dialect references, use GenerationType.IDENTITY explicitly, update H2Dialect to unversioned form
- RestTemplate → RestClient: Migrate to fluent RestClient API
- Application properties: Update hibernate dialect class names, remove deprecated properties
Usage
import sys
sys.path.insert(0, '/app/environment/skills/evo-spring-boot-jakarta-migration/scripts')
from migrate import run_migration
run_migration('/workspace')
Scripts
scripts/migrate.py— Main entry point orchestrating all migration stepsscripts/pom_migrator.py— POM XML transformation (parent, java version, dependencies)scripts/namespace_migrator.py— javax → jakarta import replacement across all .java filesscripts/security_migrator.py— Spring Security 6 config and JWT filter migrationscripts/jwt_migrator.py— JJWT 0.9.x → 0.12.x API call migrationscripts/hibernate_migrator.py— Hibernate 6 compatibility (dialects, ID generation)scripts/restclient_migrator.py— RestTemplate → RestClient migrationscripts/properties_migrator.py— application.properties updatesscripts/file_utils.py— Shared file I/O and scanning utilities
Domain Knowledge References
- javax.crypto.* is Java SE, NOT Jakarta EE — never migrate these imports
- JJWT 0.12.x uses immutable builder:
Jwts.parser().verifyWith(key).build().parseSignedClaims(token).getPayload() - Spring Security 6:
.and()chaining removed, use Lambda DSL exclusively - Hibernate 6:
GenerationType.AUTOcreates per-entity sequences — use IDENTITY for MySQL/H2 - Spring Boot 3.2: trailing slash matching disabled by default
-parameterscompiler arg required for Spring MVC parameter name resolution
Signals
- GitHub stars
- 89
- Forks
- 4
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
evo-spring-boot-jakarta-migration- Source
- github.com/openlair/openskill