Spring Boot Admin is a multi-module Maven project providing an admin interface for Spring Boot applications that expose actuator endpoints. It consists of a Vue.js frontend and Java backend components with 19 Maven modules.
Always reference these instructions first and fallback to search or bash commands only when you encounter unexpected information that does not match the info here.
- Install Java 17 (OpenJDK Temurin 17.0.16+ recommended) - project requires exactly Java 17
- Install Node.js 22.18.0 exactly (project specifies this in .nvmrc and package.json)
- Download Node.js 22.18.0:
curl -fsSL https://nodejs.org/dist/v22.18.0/node-v22.18.0-linux-x64.tar.xz -o /tmp/node.tar.xz - Extract and configure PATH:
cd /tmp && tar -xf node.tar.xz && export PATH="/tmp/node-v22.18.0-linux-x64/bin:$PATH" - Verify versions:
java -version(should show 17.x) andnode --version(should show v22.18.0)
- NEVER CANCEL builds - they take time but will complete successfully
- CRITICAL: Set timeout to 20+ minutes for builds, 60+ minutes for tests
- Clean compile:
export PATH="/tmp/node-v22.18.0-linux-x64/bin:$PATH" && ./mvnw clean compile -B --no-transfer-progress -DskipTests-- takes ~10.5 minutes - Full package:
export PATH="/tmp/node-v22.18.0-linux-x64/bin:$PATH" && ./mvnw package -B --no-transfer-progress -DskipTests-- takes ~4 minutes - Install to local repository:
export PATH="/tmp/node-v22.18.0-linux-x64/bin:$PATH" && ./mvnw install -B --no-transfer-progress -DskipTests-- takes ~1.5 minutes
- NEVER CANCEL test runs - set 60+ minute timeouts
- Full test suite:
export PATH="/tmp/node-v22.18.0-linux-x64/bin:$PATH" && ./mvnw test -B --no-transfer-progress-- takes 20-40 minutes - UI tests only:
cd spring-boot-admin-server-ui && export PATH="/tmp/node-v22.18.0-linux-x64/bin:$PATH" && npm run test-- takes ~44 seconds - UI build only:
cd spring-boot-admin-server-ui && export PATH="/tmp/node-v22.18.0-linux-x64/bin:$PATH" && npm run build-- takes ~16 seconds
- Format Java code:
./mvnw spring-javaformat:apply - Check Java formatting:
./mvnw spring-javaformat:validate - Lint UI code:
cd spring-boot-admin-server-ui && npm run lint - Format UI code:
cd spring-boot-admin-server-ui && npm run format:fix - ALWAYS run
./mvnw spring-javaformat:applyand UI formatting before committing - ALWAYS run
./mvnw checkstyle:checkto verify compliance
- Build and install all modules first:
export PATH="/tmp/node-v22.18.0-linux-x64/bin:$PATH" && ./mvnw install -B --no-transfer-progress -DskipTests - Run servlet sample:
cd spring-boot-admin-samples/spring-boot-admin-sample-servlet && export PATH="/tmp/node-v22.18.0-linux-x64/bin:$PATH" && ../../mvnw spring-boot:run -Dspring-boot.run.profiles=dev,insecure - Access UI at:
http://localhost:8080(username: user, password shown in logs or use insecure profile) - Application starts in ~3 seconds and shows "all up" status with registered instance
- For UI development:
cd spring-boot-admin-server-ui && npm run build:watch(builds on file changes) - Configure Spring Boot Admin Server with:
spring.boot.admin.ui.cache.no-cache: true spring.boot.admin.ui.resource-locations: file:../../spring-boot-admin-server-ui/target/dist/ spring.boot.admin.ui.template-location: file:../../spring-boot-admin-server-ui/target/dist/ spring.boot.admin.ui.cache-templates: false
- MANUAL VALIDATION REQUIRED: After building and running, always test actual functionality
- Launch sample application and verify Spring Boot Admin UI loads at
http://localhost:8080 - Verify application registration: Should show "spring-boot-admin-sample-servlet" with UP status
- Test navigation: Click on Applications, Wallboard, and instance details
- Check endpoints: Verify actuator endpoints are detected and accessible
- Test monitoring features: Instance details should show health, metrics, loggers, etc.
- Root:
/- Main Maven reactor project (pom.xml) - Server Backend:
spring-boot-admin-server/- Core Spring Boot Admin server functionality - UI Frontend:
spring-boot-admin-server-ui/- Vue.js 3 web interface with Vite build - Client:
spring-boot-admin-client/- Client library for connecting applications - Documentation:
spring-boot-admin-docs/- Asciidoc documentation
- Server Starter:
spring-boot-admin-starter-server/- Auto-configuration for servers - Client Starter:
spring-boot-admin-starter-client/- Auto-configuration for clients
- servlet: Standard servlet-based sample (recommended for testing)
- reactive: WebFlux reactive sample
- eureka: Eureka discovery integration
- consul: Consul discovery integration
- hazelcast: Hazelcast session management
- war: WAR deployment sample
- zookeeper: Zookeeper discovery integration
- Dependencies:
spring-boot-admin-dependencies/- Dependency management BOM - Build:
spring-boot-admin-build/- Build configuration and tooling - Server Cloud:
spring-boot-admin-server-cloud/- Spring Cloud integrations
- Node.js version mismatch: Always use exact PATH override with v22.18.0
- Missing dependencies: Run
./mvnw installto install all modules to local Maven repository - Checkstyle violations: Run
./mvnw spring-javaformat:applyto auto-fix formatting - UI build failures: Verify Node.js version and run
npm installin spring-boot-admin-server-ui/ - "Command timed out": Increase timeout - builds legitimately take 10+ minutes
- Sample app dependency resolution: Must run
./mvnw installfirst to populate local repository - Config server connection refused: Normal warning, config server is optional in dev mode
- Security warnings: Use
insecureprofile for development to bypass authentication
- Setup: Configure Node.js 22.18.0 in PATH:
export PATH="/tmp/node-v22.18.0-linux-x64/bin:$PATH" - Initial Build: Run
./mvnw clean compileto verify everything builds (~10.5 minutes - be patient) - Install Dependencies: Run
./mvnw install -DskipTestsfor sample app dependencies (~1.5 minutes) - Make Changes: Edit code in appropriate modules
- Format Code: Run
./mvnw spring-javaformat:applyand UInpm run format:fix - Test Build: Run build commands to verify changes don't break anything
- Manual Validation: Start sample application and test UI functionality
- Final Check: Ensure formatting and linting pass before committing
- NEVER CANCEL: Build commands take significant time but complete successfully
- Clean compile: ~10.5 minutes (normal, expected)
- Package build: ~4 minutes
- Install build: ~1.5 minutes
- Full test suite: 20-40 minutes (set 60+ minute timeout)
- UI tests only: ~44 seconds
- UI build only: ~16 seconds
- Application startup: ~3 seconds
- Backend: Spring Boot 3.5, Java 17, Maven multi-module
- Frontend: Vue.js 3, Vite, TypeScript, Tailwind CSS
- Testing: JUnit 5 (Java), Vitest (UI), Playwright integration
- Build: Maven 3.9+, Node.js 22.18.0, npm
- Code Quality: Spring Java Format, Checkstyle, ESLint, Prettier
spring-boot-admin/ # Root project (19 modules)
├── .github/ # GitHub configuration
├── spring-boot-admin-build/ # Build configuration
├── spring-boot-admin-client/ # Client library
├── spring-boot-admin-dependencies/ # Dependency management
├── spring-boot-admin-docs/ # Documentation (Asciidoc)
├── spring-boot-admin-samples/ # Sample applications
│ ├── spring-boot-admin-sample-servlet/ # Main sample (recommended)
│ ├── spring-boot-admin-sample-reactive/ # WebFlux sample
│ └── [other samples]/ # Various integration samples
├── spring-boot-admin-server/ # Core server implementation
├── spring-boot-admin-server-cloud/ # Spring Cloud integrations
├── spring-boot-admin-server-ui/ # Vue.js frontend
│ ├── src/main/frontend/ # Vue.js source code
│ ├── package.json # Node.js dependencies
│ └── .nvmrc # Node.js version specification
├── spring-boot-admin-starter-*/ # Spring Boot auto-configuration
├── mvnw # Maven wrapper
└── pom.xml # Root Maven configuration