Есть ли способ вывести все классы, доступные для импорта, с помощью gradle / maven - PullRequest
0 голосов
/ 01 января 2019

Я пользователь vim / neovim, и мне интересно, могу ли я упростить задачу добавления импорта в файл java, не прибегая к использованию intellij или языкового сервера.Поэтому моя идея заключалась в том, чтобы получить список всех классов, а затем каким-то образом использовать этот список для вставки оператора импорта.

Чтобы проиллюстрировать мою идею.Скажем, мой курсор находится здесь.

var a = List.of(1);
        ^

Я вызываю некоторый vimscript, и он дает мне фильтруемый список импорта, который включает List

Может быть, что-то похожее на Google?

Ответы [ 3 ]

0 голосов
/ 01 января 2019

Посмотрите на vim-javacomplete2 .Одна из его функций - автоматическое добавление импорта, в том числе static импорта и импорта вложенных классов.Он автоматически ищет файлы классов, используя файл Maven, Gradle или Eclipse .classpath.

0 голосов
/ 01 января 2019

В наши дни Java IDE настолько умны, что использование чего-либо еще по сути тратит ваше время (и, следовательно, косвенно деньги).

Это очень похоже на использование Блокнота вместо Word до (или vim вместо LibreOffice) до тех пор, пока вы не захотите проверить грамматику, встроенную графику и т. Д. Конечно, вы можете сделать это при наличии достаточного количества времени или смазки, но почемузаново изобретать все колеса на пути.В начале 2000-х годов в Emacs была довольно удобная среда разработки Java, которая почти сразу же проиграла Eclipse.

В качестве примера, IntelliJ теперь знает, как показать тип текущей точки в цепочке вызовов методов (очень часто с потоками), что кратко, очень полезно при чтениикод позже.

IntelliJ screen shot

Итак, чтобы получить то, что вам нужно, вам все равно нужна IDE, которая может понять ваш код.Считаете ли вы вместо этого указанием IDE запустить vim на вашем источнике, если вы хотите использовать всю мощь vim?IntelliJ может получать изменения в файловой системе без уведомления.

0 голосов
/ 01 января 2019

Вы можете написать задачу Gradle для вывода всех классов в файл.Например,

task dumpClasses {
    inputs.files configurations.compile
    outputs.file "$buildDir/dumpClasses.txt"
    doLast {
        file("$buildDir/dumpClasses.txt").withWriter { writer ->
            configurations.compile.each { file ->
                FileTree tree = file.name.endsWith('.jar')
                   ? zipTree(file)
                   : (file.directory ? fileTree(file) : null)
                if (tree) {
                    tree.matching { include '**/*.class' }.each {
                        writer.println(it.name)
                    }
                } 
            }
        } 
    } 
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...