Spring CLI

The goal of the Spring CLI is to increase your productivity when you create new projects and when you add functionality to existing projects. It does this by providing the following high-level features:

  1. The boot new command clones an external project and optionally performs a package refactoring to your chosen package name. You can also optionally specify the new project’s group id, artifact id, and version.

  2. The boot add command merges an external project to your current project. It performs an intelligent merge of project dependencies, plug-ins, annotations, and application configuration files. It also refactors the external project code into your current project’s package structure.

  3. User-provided commands provide a user-friendly way to define and run custom commands that can perform everyday tasks on your project. With declarative command definitions living alongside your code, you can easily create new controllers, add dependencies, or configure files. You can also run other command-line applications as needed, creating a client-side GitHub Actions like experience.

Following a "Plain Old Java Projects" approach to code generation, implemented in the boot new and boot add commands, lets companies and other groups of developers define a standard set of projects with preferred libraries and coding styles. By including a README.md file in these projects, team members can quickly get started with new libraries or programming approaches. For instance, running `boot add jpa not only adds code to your project but also renames the `README.md file to README-jpa.md file for easy discovery.

User-defined commands are ideal for repetitive coding tasks. Since command definitions live alongside the your code, anyone on the your team can contribute or improve existing commands without the need to create, update, and publish additional artifacts or projects.