This page is the entry point for developers working with or contributing to the Spring Boot repository. It covers the primary communication channels for getting help, the process for reporting bugs and requesting features, the contribution workflow, and the mechanics of building the project locally. For detailed IDE setup instructions, see IDE Setup and Configuration. For a full breakdown of support channels, see Support Channels and Community Resources. For contributing workflow specifics (DCO, formatting, Checkstyle), see Contributing and Development Workflow.
Spring Boot routes different request types to different channels. Using the wrong channel slows down response time.
| Request Type | Channel | Details |
|---|---|---|
| General usage questions | Stack Overflow | Use the spring-boot tag README.adoc59 |
| Bug reports | GitHub Issues | Provide version, OS, JVM; attach a minimal reproducer README.adoc71-83 |
| Feature requests | GitHub Issues | Describe the use case, not just the desired API README.adoc71-83 |
| Security vulnerabilities | spring.io/security-policy | Do not use GitHub issues for CVEs CONTRIBUTING.adoc25-29 |
| Code of Conduct violations | code-of-conduct@spring.io | Governed by the Contributor Covenant CONTRIBUTING.adoc7-10 |
Sources: README.adoc51-83 CONTRIBUTING.adoc7-29
Before opening an issue or asking a question, the recommended resolution order is:
Diagram: Help Resolution Flow
Sources: README.adoc51-61
When opening a GitHub issue, include the following to avoid back-and-forth:
java -version output) README.adoc79Security vulnerabilities must never be disclosed in public GitHub issues. Follow the responsible disclosure process at the spring.io/security-policy URL CONTRIBUTING.adoc28
Diagram: Contribution Workflow and Key Files
Sources: git/hooks/prepare-forward-merge1-71 CONTRIBUTING.adoc32-57
Every commit must include a Signed-off-by trailer. This indicates agreement to the Developer Certificate of Origin CONTRIBUTING.adoc32-35 The trailer format is:
Signed-off-by: Your Name <your.email@example.com>
| Convention | Mechanism | How to Run |
|---|---|---|
| Source formatting | Spring JavaFormat plugin | ./gradlew format CONTRIBUTING.adoc46 |
buildSrc formatting | Same plugin, separate invocation | ./gradlew -p buildSrc format CONTRIBUTING.adoc47 |
| Static analysis | Checkstyle | ./gradlew checkstyleMain checkstyleTest CONTRIBUTING.adoc48 |
| Full verification | All checks + tests | ./gradlew check CONTRIBUTING.adoc54 |
| Documentation | Javadoc with @author | N/A CONTRIBUTING.adoc49-52 |
Sources: CONTRIBUTING.adoc39-57 buildSrc/build.gradle19-20
The project requires JDK 25 README.adoc90 The Gradle wrapper handles the build execution.
Build only (no tests):
This command builds all modules and publishes them to your local Maven cache README.adoc97
Full build with tests:
Sources: README.adoc86-105 gradle.properties12
Diagram: IDE Setup Entry Points
Sources: eclipse/spring-boot-project.setup1-161 CONTRIBUTING.adoc45-46
For Eclipse, the spring-boot-project.setup file defines requirements like the io.spring.javaformat.eclipse.feature eclipse/spring-boot-project.setup73 and memory settings of -Xmx2048m eclipse/spring-boot-project.setup34 It also organizes the workspace into working sets like platform, core, and module eclipse/spring-boot-project.setup114-131
Full IDE setup instructions are in IDE Setup and Configuration.
| File | Purpose |
|---|---|
| README.adoc | Main landing page for build instructions and help links |
| CONTRIBUTING.adoc | Guidelines for DCO, formatting, and issue reporting |
| gradle.properties | Defines toolchain versions (Java 25) and dependency versions gradle.properties1-30 |
| buildSrc/src/main/java/org/springframework/boot/build/JavaConventions.java | Core logic for Java compiler flags, Checkstyle, and test settings JavaConventions.java136-163 |
| git/hooks/prepare-forward-merge | Git hook that rewrites merge commit messages for branch-forward workflow |
| eclipse/spring-boot-project.setup | Eclipse Oomph configuration for automated workspace setup |
Sources: README.adoc1-120 CONTRIBUTING.adoc1-64 gradle.properties1-31 eclipse/spring-boot-project.setup1-161
The repository includes a merge preparation hook at git/hooks/prepare-forward-merge1-71 written in Ruby. When a merge commit is detected, it:
Fixes gh-NNN or Closes gh-NNN references from the source commit git/hooks/prepare-forward-merge12-25Fixes gh-1234 in 4.1.x) to the merge commit message git/hooks/prepare-forward-merge46-52origin/ prefix git/hooks/prepare-forward-merge38-40The main branch variable is currently set to 4.1.x git/hooks/prepare-forward-merge7 This hook is primarily used by maintainers performing forward-merges between release branches.
Sources: git/hooks/prepare-forward-merge1-71