Setting the file. One moment.
Skill 114 · Create Spring Boot Java Project
Subchapter 114.8
references/versions.mdMarkdown3 KBView on GitHub
pom.xml / build.gradle(.kts) (Spring Boot parent or plugin version, java.version/toolchain, spring-boot-starter-test). Keep them. Never bump implicitly.latest, LATEST or RELEASE as a version, nor piped shell installers.curl -fsS -H 'Accept: application/json' https://start.spring.io/metadata/client \
| python3 -c "import json,sys; d=json.load(sys.stdin); print(d['bootVersion']['default'], d['javaVersion']['default'])"bootVersion.default is the current stable release (it may carry a .RELEASE suffix such as 4.1.1.RELEASE; strip it: pass 4.1.1).SNAPSHOT, M or RC (milestones/snapshots) unless the user asks for them.javaVersion.default is only the start.spring.io default. Pick the highest LTS the installed JDK supports (java -version), and make sure it is offered in javaVersion.values.bootVersion=3.5.x returns HTTP 400 “compatibility range is >=4.0.0”). For a Boot 3.5 project, generate nothing: hand-write the build file with spring-boot-starter-parent 3.5.x (latest 3.5 on Maven Central, e.g. 3.5.16), spring-boot-starter-web, and spring-boot-starter-test, plus the Maven/Gradle wrapper. Creating the wrapper (mvn wrapper:wrapper / gradle wrapper) requires Maven or Gradle to be installed locally; if neither is available, ask the user to install one or choose Boot 4.curl -fsSI https://repo1.maven.org/maven2/org/springframework/boot/spring-boot/BOOT_VERSION/spring-boot-BOOT_VERSION.pom.| Item | Value |
|---|---|
| Spring Boot | 4.1.1 |
| Java | 25 (LTS) |
| PostgreSQL image | postgres:18-alpine |
| Testcontainers | managed by the Spring Boot BOM; do not pin unless overriding |
| JDK image | eclipse-temurin:25-jdk-noble |
| GraalVM image | ghcr.io/graalvm/graalvm-community:25 |
These values age: when start.spring.io is reachable, prefer its answer, and tell the user which source was used.
Do not specify versions for Spring-managed dependencies (Hibernate, Jackson, Testcontainers, PostgreSQL driver, JUnit). Pin only what the BOM does not manage (for example a Maven plugin or a Docker image tag).