Страницы

Поиск по вопросам

среда, 14 ноября 2018 г.

Как запустить команды Git из Java?

Я могу запускать команды, git add, git commit, прямо из Git. Но есть ли какие-либо методы, чтобы я мог запускать команды непосредственно из java.


Ответ

Не знаю как это описать на русском. Но в Java есть класс Runtime для соответствующей работы.
У него есть метод getRuntime(), который возвращает соответствующий приложению Runtime, а также есть метод exec(String command), который в отдельном процессе запускает команду, представленную переданной строкой. Возвращаемый объект :py:class::java.lang.Process и может быть использован для управления выполнением этого процесса. Собственно их и можно использовать. Пример:
Runtime.getRuntime().exec("git add");
Естественно с try/catch и прочими проверяющими конструкциями

P.S.
Нашел описание методов на русском, чтоб ознакомиться проще было. Источник ilnurgi1.ru
class java.lang.Runtime
getRuntime() - Возвращает соответсвующий приложению Runtime
exit(int status) public void - Осуществляет завершение программы с кодом завершения status (при использовании этого метода особое внимание нужно уделить обработке исключений - выход будет осуществлен моментально, и в конструкциях try-catch-finally управление в finally передано не будет)
gc() public native void - Сигнализирует сборщику мусора о необходимости запуска
freeMemory() public native long - Возвращает количество свободной памяти. В некоторых случаях это количество может быть увеличено, если вызвать у объекта Runtime метод gc()
totalMemory() public native long - Возвращает суммарное количество памяти, выделенное Java машине. Это количество может из изменяться даже в течении одного запуска, что зависит от реализации платформы на которой запущена Java машина. Так-же, не стоит закладываться на объем памяти, занимаемой одним определенным объектом - эта величина так же зависит от реализации Java машины.
loadLibrary(String libname) public void - Загружает библиотеку с указанным именем. Обычно загрузка библиотек производится следующим образом: в классе, использующем native реализации методов, добавляется статический инициализатор, например:
static { System.loadLibrary("LibFile"); }
Таким образом, когда класс будет загружен и инициализирован, необходимый код для реализации native методов так-же будет загружен. Если будет произведено несколько вызовов загрузки библиотеки с одним и тем-же именем - произведен будет только первый, а все остальные будут проигнорированы.
load(String filename) public void - Подгружает файл с указанным названием в качестве библиотеки. В принципе, этот метод работает так-же как и метод load(), только принимает в качестве параметра именно название файла, а не библиотеки, тем самым позволяя загрузить любой файл с native кодом.
runFinalization() public void - Производит запуск выполнения методов finalize() у всех объектов, этого ожидающих
exec(String command) public Process - В отдельном процессе запускает команду, представленную переданной строкой. Возвращаемый объект :py:class::java.lang.Process может быть использован для управления выполнением этого процесса.

Комментариев нет:

Отправить комментарий