Implement Maven-based Spring Boot project detection
- Dominant language
- Go
- Stars
- 569
- Forks
- 364
- Avg merge
- 2d 19h
- Merged PRs (30d)
- 136
Description
Implement Spring Boot project detection in the `azure.springboot` extension using the extension detection capability introduced by [#9838](https://github.com/Azure/azure-dev/issues/9838). The extension should inspect an existing Maven project and describe its deployable Spring Boot applications and dependencies to azd.
The Spring Boot project remains the source of truth. Detection should be deterministic, explain what it inferred, and make no changes to the application. This issue only identifies what is present. Choosing an Azure host, generating infrastructure, configuring Azure integrations, and deploying the application belong in later issues.
We need to:
- Implement the extension detection interface from [#9838](https://github.com/Azure/azure-dev/issues/9838) in `cli/azd/extensions/azure.springboot/`.
- Detect Spring Boot applications from Maven project metadata.
- Recognize Spring Boot from the effective Maven model rather than requiring one specific parent POM structure.
- Support single-module and multi-module Maven projects.
- Identify deployable Spring Boot modules without treating parent, library, test, or build-only modules as services.
- Identify the Java version, Spring Boot version, module path, artifact name, packaging type, and application entry point when available.
- Detect executable JAR and WAR packaging.
- Detect the application and management ports when they are statically configured.
- Detect Spring Boot Actuator and configured health endpoints.
- Detect dependencies that indicate an external resource or application relationship, including:
- PostgreSQL
- MySQL
- Redis
- MongoDB
- Azure Cosmos DB
- Azure Storage
- Azure Service Bus
- Azure Event Hubs
- Azure Key Vault
- Spring Cloud Config
- Eureka service discovery
- Preserve unknown or unsupported dependencies in the detection result when the extension API allows it.
- Include the source of each inference, such as the module, dependency, plugin, or configuration property that produced it.
- Return no match for an ordinary Maven or Java project that is not a Spring Boot application.
- Return deterministic, consistently ordered results for the same project and extension version.
- Add representative fixtures for single-module, multi-module, executable JAR, WAR, inherited configuration, incomplete, and unsupported project shapes.
- Add table-driven tests for successful detection, non-matches, conflicting configuration, inherited Maven configuration, and partial results.
- Document supported Maven project shapes and known limitations in `cli/azd/extensions/azure.springboot/README.md`.
- Link this issue as blocked by [#9838](https://github.com/Azure/azure-dev/issues/9838) and the `azure.springboot` extension foundation issue.
## Boundaries
- Do not add Spring-specific commands or verbs.
- Do not add an `azd spring` command namespace.
- Do not modify azd core behavior or core application detection.
- Do not copy Spring Boot-specific detection into azd core.
- Do not add Gradle support in this issue.
- Do not generate or modify `azure.yaml`.
- Do not generate Bicep, Terraform, Dockerfiles, or deployment manifests.
- Do not select Azure Container Apps, App Service, AKS, or another deployment target.
- Do not provision or deploy Azure resources.
- Do not modify the detected Spring Boot project.
- Do not require the application to use Spring Cloud Azure.
- Do not execute application code during detection.
- Prefer static project inspection. Do not run Maven unless it is necessary to resolve inherited project metadata and the extension detection contract explicitly permits it.
- If the extension API cannot represent part of the detected Spring Boot model, file that gap against the appropriate core epic rather than adding a workaround or modifying core in this issue.
Contributor guide
Research direction
Start with the extension detection interface introduced by #9838, then inspect cli/azd/extensions/azure.springboot/ and its foundation issue. Add representative Maven fixtures and table-driven tests for the listed project shapes, including non-matches and partial results. Done means deterministic, read-only detection with documented limitations in cli/azd/extensions/azure.springboot/README.md.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java, spring-boot
- Domain
- cli, tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100