lazyvim折腾日记(7)

lazyvim 折腾日记(7)

前言

发现我以前针对 java 以及 groovy 的配置丢了,
重新配置过程中出现了一些问题,遂记录一下过程

本文目的是针对 java 以及 groovy 两门语言,在 nvim 中进行配置,
从而达到使用 nvim 开发 java 以及 groovy 项目的目的

具体内容

java 配置

具体配置

首先于 lazyvim 中启动 Extras 页面,在标红框位置按 x 键来启动 extras
在这之后 lazyvim 就会自动下载相关依赖,查看参考文献1

:LazyExtras

2025-08-13_11-27

⚠️ 注意事项
由于使用的是 java-language-server, 因此我们需要 java 版本设置在 21 以上
参考我之前的 jenv 配置博客,你需要配置好 jenv version
查看 `参考文献2``

又因为我们有开发多个版本 java 项目的需求, 所以我们需要设置 java 进行时
观察 extras 中我们下载的依赖,能够设置 java 进行时的只有 nvim-jdtls
因此针对该插件进行配置,查看 `参考文献3

❯ pwd
$HOME/.config/nvim/lua/plugins/java
❯ ll
total 4.0K
-rw-r--r-- 1 su su 599  8月13日 11:06 init.lua
> cat init.lua
 return {
  {
    "mfussenegger/nvim-jdtls",
    config = {
      settings = {
        java = {
          configuration = {
            runtimes = { { name = "JavaSE-1.8",
                path = "${JDK 安装路径}/jdk8u442-b06"
              },
              {
                name = "JavaSE-17",
                path = "${JDK 安装路径}/jdk-17.0.14+7/",
              },
              {
                name = "JavaSE-21",
                path = "${JDK 安装路径}jdk-21.0.6+7/",
              },
            },
          },
        }, },
    },
  },
}

而当我们想要切换 java 版本的时候敲入命令即可

:JdtSetRuntime

自己选择即可

⚠️ 注意事项
在上述配置中的 name 选项不是随便编写的,是根据文档的字典得来的
具体在 *java 版本设置* 参考文献3 里 ExecutionEnvironment 就能够找到对应的 name 字典 \

至此,我们已经成功配置 java 在 nvim 中的使用了

参考资料

lazyvim java extras 官方页面

nvim-jdtls

java 版本设置

groovy 配置

groovy 安装

首先我们需要先安装 groovy

我们的思路是,首先安装 sdkman
再通过 sdkman 安装 groovy

❯ curl -s "https://get.sdkman.io" | bash
❯ source "$HOME/.sdkman/bin/sdkman-init.sh"
❯ sdk install groovy

在这之后安装 groovy-lang-server

❯ cd ~/.local/opt
❯ git clone https://github.com/GroovyLanguageServer/groovy-language-server.git
❯ ./gradlew build

如果顺利的话,编译的结果是build/libs/groovy-language-server-all.jar`

当我们要启动 groovy-language-server 的时候,输入

❯ java -jar ~/.local/opt/groovy-language-server/build/libs/groovy-language-server-all.jar

即可启动 lsp

安装文档查看 参考文献1 2

grovy 配置

截止 08/13/2025 lazyvim 并没有给出 groovy 的 extras 所以我们需要自行配置

其思路为

  1. 接入 lsp
  2. 配置语法高亮
  3. 配置语法格式化
  4. 配置 dap

首先我们需要接入 lsp \

首先在 options.lua添加 lsp 的配置

❯ pwd
/home/su/.config/nvim/lua/config
❯ ll
total 16K
-rw-r--r-- 1 su su  213  5月20日 12:21 autocmds.lua
-rw-r--r-- 1 su su  209  5月20日 12:21 keymaps.lua
-rw-r--r-- 1 su su 1.9K  5月20日 12:21 lazy.lua
-rw-r--r-- 1 su su  781  8月13日 15:13 options.lua
❯ cat options.lua
...
vim.lsp.enable("groovyls")
vim.lsp.config("groovyls", {
  cmd = {
    "java",
    "-jar",
    "~/.local/opt/groovy-language-server/build/libs/groovy-language-server-all.jar",
  },
})
...

⚠️ 注意事项
Java -jar 后面的路径就是前文编译的 groovy-language-server 路径

这部分具体查看 参考文献5

同时,我们还需要禁用 mason 的自动安装功能,不然的话 mason 会自动安装 groovy-language-server
这样我们就无法使用我们新编译的 lsp 了

❯ cat init.lua
return {
  {
    "mason-org/mason-lspconfig.nvim",
    setup = {
      automatic_installation = false,
    },
    dependencies = {
      { "mason-org/mason.nvim", opts = {} },
      "neovim/nvim-lspconfig",
    },
  },
}

这里的详细文档参考 :h mason-lspconfig-setting

⚠️ 注意事项
注意是在 mason-lspconfig 配置中禁用自动安装功能
而不是在 mason.nvim 中禁用,在那里禁用没有效果

ℹ️ 提醒事项
上面的配置是针对手动配置的情况,如果使用 Mason 的话
只需要 :MasonInstall groovy-language-server 即可
这样可以省略掉我们编译 groovy-language-server 以及配置 options.lua 的步骤
但是在本机中,Mason 自动安装的 groovy lsp 并不能够识别项目的依赖,故进行手动安装


接下来配置语法格式化

由于个人发现 Masonnpm-groovy-lint 并不能够生效
故手动安装 formatter 插件

首先根据 mason 提示,groovy 的 lintformatter 功能可以通过 npm-groovy-lint 实现
因此我们需要首先安装该插件

❯ npm install -g npm-groovy-lint

顺利安装即可,具体查看 参考文献6

⚠️ 注意事项
反正我没有顺利安装
npm-groovy-lint 依赖 java17 , 而我的 java 版本为 21
这导致执行 npm install 命令的时候会同步下载 java17 的镜像
由于网络问题,我根本下载不了该镜像
所以我查看了下载的目录为 ~/.java-caller
我自己上网找了个 java17 的镜像然后把名字改成了他下载的名字并放入 ~/.java-caller
这样就可以顺利安装了

同时我们需要清楚,在 lsp 不提供 lint 和 formatter 的情况下,
我们需要 conform.nvim 该插件来实现相关功能

于是我们在前面的 init.lua 中添加 conform.nvim 的配置
具体配置方法可以查看 参考文献7

❯ pwd
/home/su/.config/nvim/lua/plugins/groovy
❯ ll
total 4.0K
-rw-r--r-- 1 su su 372  8月13日 15:15 init.lua
❯ cat init.lua
return {
  {
    "conform.nvim",
    opts = function(_, opts)
      if LazyVim.has_extra("formatting.prettier") then
        opts.formatters_by_ft = opts.formatters_by_ft or {}
      \\ 当文件检测到是 `.groovy` 后缀的时候, 调用 `npm-groovy-lint` 进行格式化
        opts.formatters_by_ft.groovy = { "npm-groovy-lint" }
      end
    end,
  },
}

最后我们来配置 dap

参考文档

sdkman install method
groovy install method
groovy language server
java config in lazyvim
nvim-lspconfig groovyls
npm-groovy-lint
conform.nvim

posted @ 2025-12-01 00:29  五花肉炒河粉  阅读(49)  评论(0)    收藏  举报