2016-04-26 2 views
1

Я новичок в разработке плагинов для IntelliJ и хотел бы знать, как я могу выполнить команду в командной строке из моего плагина.IntelliJ Plugin - Run Console Command

Я бы хотел вызвать, например, команду «gulp» в корневом каталоге текущих проектов.

Я уже пробовал использовать

Runtime.getRuntime().exec(commands); 

с командами, как «CD C: \ Users \ User \ MyProject» и «глотка», но это, кажется, не работает таким образом, и мне интересно, если плагин API предоставляет более простой метод.

спасибо. :-)

+0

Вы хотите вызвать 'gulp' из своей Java-программы или вы спрашиваете о чем-то еще? –

+1

@TimBiegeleisen Он спрашивает из плагина для идеи IDE – Natecat

ответ

2

Я знаю его немного поздно (1 год спустя), но в последнее время я работал над плагином IntelliJ, и у меня была такая же проблема, и это то, что я использовал, и это работает очень хорошо.

Во-первых, нам нужно создать список команд, которые мы должны выполнить:

ArrayList<String> cmds = new ArrayList<>(); 
    cmds.add("./gradlew"); 

Тогда

GeneralCommandLine generalCommandLine = new GeneralCommandLine(cmds); 
    generalCommandLine.setCharset(Charset.forName("UTF-8")); 
    generalCommandLine.setWorkDirectory(project.getBasePath()); 

    ProcessHandler processHandler = new OSProcessHandler(generalCommandLine); 
    processHandler.startNotify(); 

поэтому generalCommandLine.setWorkDirectory устанавливается в каталог проекта, который может быть эквивалентно команда терминала cd path/to/dir/

0

Класс Runtime предоставляет exec (String [], String [], File) метод, в котором последний аргумент является рабочим каталогом запущенного подпроцесса.

Плагин API предоставляет OSProcessHandler класса (а также другие классы, как ProcessAdapter), который может помочь управлять подпроцесс, обрабатывать его выход и т.д.