Spring Boot project generation traditionally means switching to your browser or running CLI tools — breaking your flow.
spring-initializr.nvim lets you create, customize, and download Spring Boot projects entirely within Neovim.
✅ Full Spring Initializr metadata support
✅ TUI-based UI for selecting project options
✅ Fuzzy dependency selection with telescope.nvim
✅ Tab and key-based navigation
✅ Instant download and extraction to your current working directory
spring-initializr.nvim/
├── LICENSE
├── README.md
├── lua
│ └── spring-initializr
│ ├── commands
│ │ └── commands.lua # Neovim user commands
│ ├── core
│ │ └── core.lua # Project generation logic
│ ├── init.lua # Plugin entry point
│ ├── metadata
│ │ └── metadata.lua # Metadata fetching and state
│ ├── telescope
│ │ └── telescope.lua # Telescope-based dependency picker
│ ├── ui
│ │ ├── deps.lua # Dependencies panel and buttons
│ │ ├── focus.lua # Focus management across windows
│ │ ├── init.lua # UI mount/unmount setup
│ │ ├── inputs.lua # Input fields (groupId, artifactId, etc.)
│ │ ├── layout.lua # Full UI layout builder
│ │ └── radios.lua # Radio-style selectors
│ └── utils
│ ├── file.lua # File utilities
│ ├── highlights.lua # Highlight group setup
│ ├── http.lua # Project downloader
│ ├── message.lua # Logging helpers
│ ├── url.lua # URL query encoding
│ └── window.lua # Popup window helpers
- Select project type, language, version, packaging, Java version....
- Dependency picker using Telescope
Requires Neovim 0.9+
Dependencies:
nui.nvim
plenary.nvim
telescope.nvim
(optional but recommended)
Plug 'nvim-lua/plenary.nvim'
Plug 'MunifTanjim/nui.nvim'
Plug 'nvim-telescope/telescope.nvim'
Plug 'jkeresman01/spring-initializr.nvim'
use {
'jkeresman01/spring-initializr.nvim',
requires = {
'nvim-lua/plenary.nvim',
'MunifTanjim/nui.nvim',
'
6CE0
nvim-telescope/telescope.nvim'
}
}
:SpringInitializr -- Launch the UI to configure project
:SpringGenerateProject -- Download and extract Spring Boot project to current directory
Basic setup and keybindings:
require("spring-initializr").setup()
vim.keymap.set("n", "<leader>si", "<CMD>SpringInitializr<CR>")
vim.keymap.set("n", "<leader>sg", "<CMD>SpringGenerateProject<CR>")
Keybinding | Action |
---|---|
<leader>si |
Open Spring Initializr TUI |
<leader>sg |
Generate project to current directory |
<Tab> |
Navigate forward between fields |
<S-Tab> |
Navigate backward |
j / k |
Move between radio options |
<CR> |
Confirm field selection or submit |