Leiningen, Maven и прочая
А скажите мне, почему в жабе приняты такие хитрожопости с инфраструктурой разработки?
От входа я что-то не соображу, как правильно прикрутить к кложуре jdbc, но если воспользоваться leiningen (по этим статьям: http://alexott.net/en/clojure/ClojureLein.html и http://devcenter.heroku.com/articles/clojure-web-application ), то проект создается, зависимости выкачиваются, итд.
Смущает, что непонятно, что именно при этом происходит, на низком уровне, так сказать, и что эти утилиты для сборки лезут за зависимостями в какие-то центральные репозитории. Мне как-то более привычно "скачал нужную версию, руками положил рядом в проекте и ссылаешся на нее".
От входа я что-то не соображу, как правильно прикрутить к кложуре jdbc, но если воспользоваться leiningen (по этим статьям: http://alexott.net/en/clojure/ClojureLein.html и http://devcenter.heroku.com/articles/clojure-web-application ), то проект создается, зависимости выкачиваются, итд.
Смущает, что непонятно, что именно при этом происходит, на низком уровне, так сказать, и что эти утилиты для сборки лезут за зависимостями в какие-то центральные репозитории. Мне как-то более привычно "скачал нужную версию, руками положил рядом в проекте и ссылаешся на нее".
no subject
Хитрожопость для того и создана, чтобы разработка разных проектов велась по одной и той же модели жизненного цикла (единая структура директорий в проекте, например или там фазы build), вместо ада Ant-based билдов. Плюс автоматизация разрешения зависимостей. В общем, когда осваиваешь этот инструмент, работать становится гораздо проще. Но порог вхождения определенный имеется, но это ж Java.
Автоматизация разрешения зависимостей - это очень ок, потому что этим решается проблема транзитных зависимостей, которые ручками задолбаешься решать. Управление репозиториями, версиями JAR-ок тоже достаточно логичное.
no subject
???
Некоторые заморочки могут быть только при использовании многочисленных компонентов с определёнными зависимостями и определённых версий, и в контексте полного процесса разработки. Типа, с чекаутом, компиляцией-сборкой, деплойментом на тестовый сервер, запуском тестов и выдачей отчётов, с инкреметированием версии. Вот тогда да, могут быть вопросы. В тривиальных случаях 1 xml, батник и всё.
no subject
no subject
А вот это называется "колхоз" и гарантирует невоспроизводимость билд-окружения на другой машине в другое время. С невоспроизводимыми глюками от кривизны сборки.
no subject
no subject
Руками весь этот ад обновлять заебёшься, вот и был придуман мейвен. Параноики присоединяют его к собственному репозиторию, и запрещают лезть в публичные. Но принцип остаётся.
(и, кроме того, есть главный вопрос: класть ли зависимости в свн/гит. Если да, то обновлять их ещё более заебёшься, если нет — это нарушает принцип «билд должен выполняться с нуля нажатием одной кнопки», а это очень хороший принцип).
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
А статыщпицотмильонам индусов эта эта ваша привычная операция категорически не под силу. Так что вы, ребе, в категорическом меньшинстве и ваши привычки тут веса не имеют.
no subject
no subject
Депов может много вытягиваться, но это все прозрачно для разработчика. Если есть проблема с интернетом, чтобы каждый разработчик не тянул с собой половину репозитория мавена, можно сделать проксирование репозиториев.
no subject
no subject
no subject
no subject
плюс так повелось, что в разных ветках SCM лежат pom.xml с одинаковым modelVersion. из-за чего работать в двух воркспейсах одновременно проблематично(капец как проблематично). собраные jar в локальном репозитории не различают из какой они ветки из за чего появляются невоспроизводимые на другой машине проблемы, или наоборот - все работает до того момента, пока кто-нибудь другой не вытянет себе проект.
no subject
очень согласен с http://tonsky.livejournal.com/227837.html - для разрешения зависимостей(т.е. того, для чего мы фактически используем mvn) столько boilerplate, сколько есть в pom.xml, не нужно.
no subject
лейном создал пустой проект. когда нужно какая-то либа, в тот проект записываю зависимость, lein deps, потом из папки lib этого пустого проекта ручками беру либу и кладу её в воркин-фолдер, где все мои рабочие проекты, и дальше про лейн забываю, всё остальное эклипсом делаю
но запланировал почотче освоить этот лейн, он кроме создания болванки и выкачивания зависимостей ещё кучу полезностей делает. ну и комманд-лайн, как некоторым нравится :)