My neovim config
1-- only if we have java on our sytem
2if vim.fn.executable("java") == 1 then
3 vim.pack.add({
4 "https://github.com/nvim-java/nvim-java",
5 "https://github.com/JavaHello/spring-boot.nvim",
6 "https://github.com/iamkarasik/sonarqube.nvim",
7 })
8
9 require("java").setup()
10
11 local function path_to_class(path)
12 local name = path:gsub("%.java$", "")
13 local class_path = name:match(".*/java/(.*)") or name
14 class_path = class_path:gsub("/", ".")
15 return class_path
16 end
17
18 -- find java files only
19 -- inspired by
20 -- https://github.com/MuriloGhignatti/nvim-config/blob/main/lua/safe/plugins/fuzzy_finder.lua
21 vim.keymap.set("n", "<leader>jc", function()
22 require("telescope.builtin").find_files({
23 prompt_title = "Java Classes",
24 cwd = vim.fn.getcwd(),
25 find_command = {
26 "rg",
27 "--files",
28 "--type",
29 "java",
30 "--glob",
31 "!*.properties",
32 "--glob",
33 "!*Test.java",
34 "--glob",
35 "!**/test/**",
36 },
37 path_display = function(_, path)
38 return path_to_class(path)
39 end,
40 previewer = true,
41 })
42 end)
43
44 vim.keymap.set("n", "<leader>jt", function()
45 require("telescope.builtin").find_files({
46 prompt_title = "Java Tests",
47 cwd = vim.fn.getcwd(),
48 find_command = {
49 "rg",
50 "--files",
51 "--type",
52 "java",
53 "--glob",
54 "!*.properties",
55 "--glob",
56 "*Test*.java",
57 "--glob",
58 "**/test/**.java",
59 },
60 path_display = function(_, path)
61 return path_to_class(path)
62 end,
63 previewer = true,
64 })
65 end)
66
67 -- mason sonarqube config
68 local extension_path = vim.fn.stdpath("data") .. "/mason/packages/sonarlint-language-server/extension"
69
70 require("sonarqube").setup({
71 lsp = {
72 cmd = {
73 vim.fn.exepath("java"),
74 "-jar",
75 extension_path .. "/server/sonarlint-ls.jar",
76 "-stdio",
77 "-analyzers",
78 extension_path .. "/analyzers/sonargo.jar",
79 extension_path .. "/analyzers/sonarhtml.jar",
80 extension_path .. "/analyzers/sonariac.jar",
81 extension_path .. "/analyzers/sonarjava.jar",
82 extension_path .. "/analyzers/sonarjavasymbolicexecution.jar",
83 extension_path .. "/analyzers/sonarjs.jar",
84 extension_path .. "/analyzers/sonarphp.jar",
85 extension_path .. "/analyzers/sonarpython.jar",
86 extension_path .. "/analyzers/sonartext.jar",
87 extension_path .. "/analyzers/sonarxml.jar",
88 },
89 },
90 })
91end