Убить всех демонов Gradle независимо от версии?

Резюме

Я хотел бы знать, как убить каждого отдельного демона gradle и процесс, запущенный на машине, независимо от версии gradle или версии демона, но команда "gradle --kill" остановит только те процессы, которые соответствуют одной и той же версии Gradle.

Случай использования

В моей сборке CI будет несколько демонов gradle, работающих с разными версиями (потому что я хороший парень, который использует оболочку для выполнения сборок). Иногда я нахожу проблемы с кэшированием или инкрементными сборками, и в качестве меры предосторожности я люблю убивать демонов. То же самое верно для моих блоков разработки, хотя конфликты чаще происходят с тем, какой VCS или IDE я использую.

Что я ищу

  1. Я надеюсь, что есть флаг или свойство, которое мне не хватает, и которое я мог бы передать в gradle, чтобы сделать это с помощью простой однострочной команды, но если это достаточно просто, я бы согласился с дополнительным.
  2. Нет сценариев (цикл, если-еще и т. Д.).
  3. Уничтожение всех процессов 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.

У меня похожая проблема, и я сделал это:

  1. Перейдите в C: \ Users \ "Имя пользователя" \. Gradle \ daemon
  2. Для каждой версии gradle есть своя папка
  3. Удалите папку с текущей текущей версией. Проверьте с помощью --status.
Другие вопросы по тегам