Убить всех демонов Gradle независимо от версии?
Резюме
Я хотел бы знать, как убить каждого отдельного демона gradle и процесс, запущенный на машине, независимо от версии gradle или версии демона, но команда "gradle --kill" остановит только те процессы, которые соответствуют одной и той же версии Gradle.
Случай использования
В моей сборке CI будет несколько демонов gradle, работающих с разными версиями (потому что я хороший парень, который использует оболочку для выполнения сборок). Иногда я нахожу проблемы с кэшированием или инкрементными сборками, и в качестве меры предосторожности я люблю убивать демонов. То же самое верно для моих блоков разработки, хотя конфликты чаще происходят с тем, какой VCS или IDE я использую.
Что я ищу
- Я надеюсь, что есть флаг или свойство, которое мне не хватает, и которое я мог бы передать в gradle, чтобы сделать это с помощью простой однострочной команды, но если это достаточно просто, я бы согласился с дополнительным.
- Нет сценариев (цикл, если-еще и т. Д.).
- Уничтожение всех процессов Java не допускается.
4 ответа
Под Linux вы можете использовать pkill:
pkill -f '.*GradleDaemon.*'
Под окнами вы можете использовать wmic:
WMIC PROCESS where "Name like 'java%' AND CommandLine like '%GradleDaemon%'" Call Terminate
PS. Почему "нет сценариев", когда это, вероятно, самое простое решение?
Демоны gradle не исчезли через 3 часа; это могло быть потому, что я работаю как гость Linux в VirtualBox.
И, следовательно, следующее удаляет всех демонов gradle, но это может быть "неодобрительно", поскольку оно может быть чрезмерным...
(1)./gradlew --stop, чтобы гарантировать, что все демоны остановлены
(2) удалите все папки / файлы в папке.gradle в проекте
(3) удалить папку.gradle в /home/username/ Linu (4) перезагрузить
Все демоны ушли. Следующая сборка займет немного больше времени, но того стоит, так как вам не нравится видеть 6 остановленных демонов каждый раз, когда запускается сборка gradle или даже чистая.
В gradle --status
команда покажет вам идентификаторы процессов для каждого из демонов. Затем вы можете использовать свою ОС, чтобы убить эти процессы.
Я предполагаю, что это кроссплатформенная функциональность, но это результат в Windows:
PID STATUS INFO
10276 IDLE 5.4.1
14068 IDLE 5.4.1
Это немного лучше, чем играть в крота с каждым процессом java.exe, запущенным в вашей системе. Хотя было бы неплохо, если бы в gradle была встроенная команда, которая могла бы завершить работу всех запущенных демонов gradle.
У меня похожая проблема, и я сделал это:
- Перейдите в C: \ Users \ "Имя пользователя" \. Gradle \ daemon
- Для каждой версии gradle есть своя папка
- Удалите папку с текущей текущей версией. Проверьте с помощью --status.