Недавно, ожидая завершения сборки проекта, я задумался, сколько операций файлового ввода-вывода происходит во время этого процесса: генерация файлов с байткодом, файлы ресурсов, одексированные файлы, оптимизация всего этого ProGuard'ом, выполнение тестов и т.п., а также отчёты и логи о каждом действии, и как это влияет на срок жизни моего SSD. И сразу захотелось прилинковать каталог с временными файлами системы сборки куда-нибудь в tmpfs. Сначала хотел написать shell-скрипт, но, быстро осознав негобкость такого подхода, решил включить соответствующие инструкции в сам проект, а также сделать их подходящими для повторного использования с минимумом усилий. В результате получился плагин SaveSSD для Gradle (системы сборки и управления зависимостями, используемой в качестве основной в Android Studio, а также поддерживаемой в некоторых других IDE). Полную инструкцию по использованию можно посмотреть на Github, где опубликованы исходники, а подключить скомпилированную библиотеку можно, сославшись на мой репозиторий в Bintray. Протестировано в Android Studio и Intellij IDEA на Android и Java проектах, но должно работать с любыми Gradle-проектами на *nix-системах (при запуске под Windows плагин просто ничего не делает). Кстати, поскольку скорость доступа к RAM существенно выше, чем к HDD, владельцы HDD тоже могут получить от этого плагина выгоду в виде ускорения сборки. Тем не менее, предусмотрена возможность включать и выключать его каждому участнику команды индивидуально, по желанию.
Итак, чтобы уменьшить нагрузку на ваш SSD при использовании Gradle, нужно:
Итак, чтобы уменьшить нагрузку на ваш SSD при использовании Gradle, нужно:
- Активировать плагин в gradle.build (в данном случае, сославшись на новейшую версию плагина в репозитории)
buildscript { repositories { maven { url 'http://dl.bintray.com/haunted-soft/maven' } } dependencies { classpath 'com.haunted.gradle-plugins:save-ssd:+@jar' } } apply plugin:'save-ssd'
- В gradle.properties (который обычно содержит индивидуальные настройки разработчика и не коммитится в общее хранилище кода) указать, что хотим, чтобы плагин работал на данной машине
saveSSD = true
- Выполнить задачу clean (или удалить каталог /build вручную), а затем можно выполнять сборку проекта (или любые другие задачи) в вашем проекте как вы обычно это делаете.
gradle clean gradle build
Вы также можете запустить задачу saveSsd вручную - она запустится, игнорируя проверку saveSSD=true, но не будет ничего делать, если каталог /build существует и не пуст.
Комментариев нет:
Отправить комментарий