
Create Spring Boot Java Project
Bootstrap a Spring Boot 3 Java 21 backend skeleton from start.spring.io with JPA, PostgreSQL, Redis, MongoDB, validation, cache, and Testcontainers.
Overview
Create Spring Boot Java Project is an agent skill for the Build phase that scaffolds a Spring Boot 3 Java 21 Maven backend from start.spring.io with data and test dependencies.
Install
npx skills add https://github.com/github/awesome-copilot --skill create-spring-boot-java-projectWhat is this skill?
- Downloads starter via curl from start.spring.io with pinned Boot 3.4.5 and Java 21
- Bundles lombok, web, data-jpa, postgresql, redis, mongodb, validation, cache, testcontainers
- Customizable artifactId, packageName, bootVersion via template parameters
- Prerequisite checks for Java 21, Docker, and Docker Compose
- Maven jar packaging workflow with unzip and cleanup steps
- Default Spring Boot version: 3.4.5
- Target Java version: 21
- Dependency set includes: lombok, web, data-jpa, postgresql, data-redis, data-mongodb, validation, cache, testcontainers
Adoption & trust: 8.9k installs on skills.sh; 34.6k GitHub stars; 2/3 security scanners passed (skills.sh audits).
What problem does it solve?
You need a Spring Boot backend repo quickly but keep recreating the same Initializr choices and local Java/Docker checks by hand.
Who is it for?
Indie builders starting a Java API or SaaS backend who already use Docker locally.
Skip if: Kotlin-first stacks, serverless-only deploys without a JVM service, or teams forbidding curl downloads from external generators.
When should I use this skill?
User needs to create a Spring Boot Java project skeleton or asks to scaffold a JVM backend with the documented template.
What do I get? / Deliverables
You receive an unzipped Maven Spring Boot project with web, persistence, cache, validation, and Testcontainers wired for local Docker development.
- Unzipped Maven Spring Boot jar project directory
- starter.zip removed after extraction
Recommended Skills
Journey fit
How it compares
Use instead of ad-hoc Initializr clicks when you want repeatable curl-driven scaffolding inside the agent session.
Common Questions / FAQ
Who is create-spring-boot-java-project for?
Solo builders comfortable with Java 21 and Docker who want a standard Spring Boot Maven skeleton for APIs or SaaS backends.
When should I use create-spring-boot-java-project?
In the Build phase when starting backend implementation after scope is set—typically before writing domain logic or CI pipelines.
Is create-spring-boot-java-project safe to install?
Review the Security Audits panel on this Prism page; the skill runs shell commands and downloads archives from start.spring.io—verify URLs and zip contents before executing.
SKILL.md
READMESKILL.md - Create Spring Boot Java Project
# Create Spring Boot Java project prompt - Please make sure you have the following software installed on your system: - Java 21 - Docker - Docker Compose - If you need to custom the project name, please change the `artifactId` and the `packageName` in [download-spring-boot-project-template](#download-spring-boot-project-template) - If you need to update the Spring Boot version, please change the `bootVersion` in [download-spring-boot-project-template](#download-spring-boot-project-template) ## Check Java version - Run following command in terminal and check the version of Java ```shell java -version ``` ## Download Spring Boot project template - Run following command in terminal to download a Spring Boot project template ```shell curl https://start.spring.io/starter.zip \ -d artifactId=${input:projectName:demo-java} \ -d bootVersion=3.4.5 \ -d dependencies=lombok,configuration-processor,web,data-jpa,postgresql,data-redis,data-mongodb,validation,cache,testcontainers \ -d javaVersion=21 \ -d packageName=com.example \ -d packaging=jar \ -d type=maven-project \ -o starter.zip ``` ## Unzip the downloaded file - Run following command in terminal to unzip the downloaded file ```shell unzip starter.zip -d ./${input:projectName:demo-java} ``` ## Remove the downloaded zip file - Run following command in terminal to delete the downloaded zip file ```shell rm -f starter.zip ``` ## Change directory to the project root - Run following command in terminal to change directory to the project root ```shell cd ${input:projectName:demo-java} ``` ## Add additional dependencies - Insert `springdoc-openapi-starter-webmvc-ui` and `archunit-junit5` dependency into `pom.xml` file ```xml <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>2.8.6</version> </dependency> <dependency> <groupId>com.tngtech.archunit</groupId> <artifactId>archunit-junit5</artifactId> <version>1.2.1</version> <scope>test</scope> </dependency> ``` ## Add SpringDoc, Redis, JPA and MongoDB configurations - Insert SpringDoc configurations into `application.properties` file ```properties # SpringDoc configurations springdoc.swagger-ui.doc-expansion=none springdoc.swagger-ui.operations-sorter=alpha springdoc.swagger-ui.tags-sorter=alpha ``` - Insert Redis configurations into `application.properties` file ```properties # Redis configurations spring.data.redis.host=localhost spring.data.redis.port=6379 spring.data.redis.password=rootroot ``` - Insert JPA configurations into `application.properties` file ```properties # JPA configurations spring.datasource.driver-class-name=org.postgresql.Driver spring.datasource.url=jdbc:postgresql://localhost:5432/postgres spring.datasource.username=postgres spring.datasource.password=rootroot spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.jpa.properties.hibernate.format_sql=true ``` - Insert MongoDB configurations into `application.properties` file ```properties # MongoDB configurations spring.data.mongodb.host=localhost spring.data.mongodb.port=27017 spring.data.mongodb.authentication-database=admin spring.data.mongodb.username=root spring.data.mongodb.password=rootroot spring.data.mongodb.database=test ``` ## Add `docker-compose.yaml` with Redis, PostgreSQL and MongoDB services - Create `docker-compose.yaml` at project root and add following services: `redis:6`, `postgresql:17` and `mongo:8`. - redis service should have - password `rootroot` - mapping port 6379 to 6379 - mounting volume `./redis_data` to `/data` - postgresql service should have - password `rootroot` - mapping port 5432 to 5432 - mounting volume `./postgres_data` to `/var/lib/postgresql/data` - mongo service should have - initdb root username `root` - initdb root password `rootroot` - ma