♾️ Универсальный Live Reload на JVM
Сегодня хочу представить долгожданный (мной) релиз моего мини-опен-сорс проектика, ♾️ seroperson/jvm-live-reload. Коротко суть: это набор плагинов для систем сборки sbt, mill и gradle, которые позволяют юзать плэй-лайк Live Reloading вне зависимости от используемого веб-фреймворка. Что-то типа JRebel для бедных. Если хотите попробовать, можно сразу переходить в секцию Installation в репозитории и смотреть, что и как надо сделать, чтобы всё завелось. На текущем этапе развития проекта что-то, возможно, не работает, но в целом должно быть норм. А для тех, кому интересны детали, можете ещё почитать сопровождающую статью 📄 Live Reloading on JVM (она же есть и на русском, а ещё есть на Хабре).
А теперь горение жопы: это был, наверное, самый душный проект в плане именно экспириенса процесса разработки. Учитывая, что в проекте три системы сборки, кодить это было НУ просто невозможно, потому что сделать даже базовую правку и не нарваться на 50 багов по пути, это, ну, супер-удача. Как бы над одним скаловым проектом если работаешь, уже часто говна жрешь, а тут sbt-шный плагин, плагин на mill и на gradle, которые шарят между собой модули на java, которые надо предварительно паблишить в локальную репу. Но в целом это ожидаемо, что никакой редактор не будет поддерживать такой сетап, поэтому остается только переключаться между подпроектами в рамках одного редактора, везде настраивать своё форматирование, линтинг, паблишинг, CI и т.д. и т.п, везде ловить свои баги, которых, получается, где-то в 3 раза больше, чем в базовом проекте с одной системой сборки: то там что-то отвалится, то сям. Ну, короче, это не разработка, а бесконечная борьба с багами редакторов, сборщиков и сборочных.
К слову, код полностью написан человеком, ИИ тут только чуть нагенерил джавадоков. На PoC у меня ушло где-то дня 4, а остальные 3 месяца - на приведение этого всего к продовому виду, на тестирование, на оформление, на статьи и переводы, на документацию, ну и вот это всё.
Поэтому надеюсь, что это кому-то понравится, потому что проект буквально выстрадан со слезами на глазах (ну, на самом деле обошлось без слез, только горящая жопа).