Не, я был готов, что раз это что-то центральное, то там все будет плохо. Но настолько?
Про приятное: jar-ку я собрал за 15 минут. Все, что идет в комплекте с JDK — прекрасные, удобные, стабильно работающие вещи: javac, jar, javadoc, java. Наверное, потому что люди, программирующие JDK, на Джаве не пишут.
Подписал еще минут за тридцать. Там нужен GPG, ну и всякая возня с Github Actions, традиционная для linux еботня: немножко помучался, немножко в говне измазался, 40 вкладок с гуглом открыл, но задачу выполнил.
И дальше, сука, начинается кафкианский процесс. Вот у меня лежат восемь файлов: три джарки, pom.xml и четыре подписи к ним (не то, чтобы нам все это было нужно, но когда начал, остановиться трудно). В конечном итоге в Maven Central будут лежать ровно эти же восемь файлов. Побайтово те же. И ничего сверху.
Казалось бы, насколько сложно их будет туда положить? Ну, curl какой-нибудь с Auth токеном, да? В цикле? Казалось.
Что нам говорит документация? На тебе, говорит, плагин для мавена. Нахера мне плагин для мавена? У меня и мавена-то нет. Ну ладно, давайте попробуем.
Попробовал. Типичный мавен: ты что-то в него пишешь, а потом ничего не происходит. Документации нет (это ж плагин). Точнее, документация такая: просто вызови
mvn deploy. Вызываю. Не реагирует. Вызываю более настойчиво. Не, каких-то ключей не хватает, урлы не те, тут я вообще не понял, и вообще ты мудак, иди нахер. Ладно.Следующая строчка в документации: если не хотите использовать
mvn deploy, зовите mvn nexus-staging:release. В чем разница? Ладно, пробую. Нет такого плагина. А я все ну вот побуквенно скопировал из доки, хоть плач. И опять я мудак. Ладно. Типичный мавен.Смотрю еще в документации. О! Ручной деплой. Ну там-то поди есть заветный URL для curl-а? Не-а. Ручной — это реально ручной, зайди, говорит, на сайт, и мышкой накликай. Я думал, компьютеры должны избавлять человека от работы, а не создавать ее.
Пошел посмотреть на их UI. Я, конечно, был готов к тому, что Джава-программисты традиционно не умеют в веб (а во что они, вообще говоря, умеют-то? В десктопы тоже не особо получается). Но тут меня встретило просто дно дна. Это какие-то табы и панельки из 90-х, как будто Эклипс взяли и засунули в браузер, а иконки натырили из какого-то бесплатного банка.
Ладно, думаю, но есть же мавен-плагин, который делает этот самый треклятый деплой. Значит, у него есть исходники. Значит, где-то внутри он делает http-запрос. Значит, можно его реверснуть. Так?
Так, да не так. Maven плагины это помойка с эффективностью примерно 1000 строк Джавы на 1 curl-запрос. Естественно, он собирается по кусочкам, которые достаются из всех возможных жоп: констант, импортов, классов каких-то, бинов. Там целая инфраструктура с фабриками чтобы, скажем, сегмент
/promote/ в URL дописать.Пошел гуглить, может REST API задокументирован где-то? Задокументирован, для третьего Нексуса. А у Сонатайпа какой? Конечно второй.
Может, ко второму документация есть? Есть, конечно же, вот она. Статья 2018-го года. Само АПИ, говорит, мы вам не покажем, пореверсите в браузере. Вот как включить: три ссылки, объясняющие, что такое девтулы, и одно видео (!!!) с заветной командой. Видео, конечно, недоступно. Вообще ни одно видео не доступно. Ну разумеется.
Вопрос только один: это все следствие какого-то survivorship bias? Нормальный человек на Джаве писать не пойдет или что? Почему так плохо все в КЛЮЧЕВОМ элементе инфраструктуры? Почему Мавен-репозиторий это не тупо SFTP папка, например? Нахрена мне настраивать какой-то maven плагин, если вызвать gpg и дернуть curl я могу хоть из баша, блин. Я же не безрукий.
Вообще, вот мотто Джава экосистемы: «нам не нравятся существующие стандарты, мы напишем свое такое же, но на Джаве, а еще мы программировать не умеем».
Так и живем.