Leiningen, Maven и прочая
Sep. 19th, 2011 12:12 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
А скажите мне, почему в жабе приняты такие хитрожопости с инфраструктурой разработки?
От входа я что-то не соображу, как правильно прикрутить к кложуре 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
Date: 2011-09-19 09:30 am (UTC)Хитрожопость для того и создана, чтобы разработка разных проектов велась по одной и той же модели жизненного цикла (единая структура директорий в проекте, например или там фазы build), вместо ада Ant-based билдов. Плюс автоматизация разрешения зависимостей. В общем, когда осваиваешь этот инструмент, работать становится гораздо проще. Но порог вхождения определенный имеется, но это ж Java.
Автоматизация разрешения зависимостей - это очень ок, потому что этим решается проблема транзитных зависимостей, которые ручками задолбаешься решать. Управление репозиториями, версиями JAR-ок тоже достаточно логичное.
no subject
Date: 2011-09-19 09:36 am (UTC)no subject
Date: 2011-09-19 09:37 am (UTC)no subject
Date: 2011-09-19 09:45 am (UTC)no subject
Date: 2011-09-19 09:47 am (UTC)no subject
Date: 2011-09-19 10:30 am (UTC)no subject
Date: 2011-09-19 10:32 am (UTC)no subject
Date: 2011-09-19 10:40 am (UTC)no subject
Date: 2011-09-19 10:44 am (UTC)Депов может много вытягиваться, но это все прозрачно для разработчика. Если есть проблема с интернетом, чтобы каждый разработчик не тянул с собой половину репозитория мавена, можно сделать проксирование репозиториев.
no subject
Date: 2011-09-19 03:32 pm (UTC)no subject
Date: 2011-09-19 09:35 am (UTC)???
Некоторые заморочки могут быть только при использовании многочисленных компонентов с определёнными зависимостями и определённых версий, и в контексте полного процесса разработки. Типа, с чекаутом, компиляцией-сборкой, деплойментом на тестовый сервер, запуском тестов и выдачей отчётов, с инкреметированием версии. Вот тогда да, могут быть вопросы. В тривиальных случаях 1 xml, батник и всё.
no subject
Date: 2011-09-19 10:32 am (UTC)no subject
Date: 2011-09-19 01:17 pm (UTC)no subject
Date: 2011-09-19 09:36 am (UTC)А вот это называется "колхоз" и гарантирует невоспроизводимость билд-окружения на другой машине в другое время. С невоспроизводимыми глюками от кривизны сборки.
no subject
Date: 2011-09-19 09:44 am (UTC)no subject
Date: 2011-09-19 09:50 am (UTC)no subject
Date: 2011-09-19 07:35 pm (UTC)no subject
Date: 2011-09-19 09:38 am (UTC)Руками весь этот ад обновлять заебёшься, вот и был придуман мейвен. Параноики присоединяют его к собственному репозиторию, и запрещают лезть в публичные. Но принцип остаётся.
(и, кроме того, есть главный вопрос: класть ли зависимости в свн/гит. Если да, то обновлять их ещё более заебёшься, если нет — это нарушает принцип «билд должен выполняться с нуля нажатием одной кнопки», а это очень хороший принцип).
no subject
Date: 2011-09-19 09:46 am (UTC)no subject
Date: 2011-09-19 09:47 am (UTC)no subject
Date: 2011-09-19 09:48 am (UTC)no subject
Date: 2011-09-19 09:49 am (UTC)no subject
Date: 2011-09-19 10:39 am (UTC)А статыщпицотмильонам индусов эта эта ваша привычная операция категорически не под силу. Так что вы, ребе, в категорическом меньшинстве и ваши привычки тут веса не имеют.
no subject
Date: 2011-09-19 10:02 pm (UTC)плюс так повелось, что в разных ветках SCM лежат pom.xml с одинаковым modelVersion. из-за чего работать в двух воркспейсах одновременно проблематично(капец как проблематично). собраные jar в локальном репозитории не различают из какой они ветки из за чего появляются невоспроизводимые на другой машине проблемы, или наоборот - все работает до того момента, пока кто-нибудь другой не вытянет себе проект.
no subject
Date: 2011-09-19 10:11 pm (UTC)очень согласен с http://tonsky.livejournal.com/227837.html - для разрешения зависимостей(т.е. того, для чего мы фактически используем mvn) столько boilerplate, сколько есть в pom.xml, не нужно.
no subject
Date: 2011-09-20 09:12 am (UTC)лейном создал пустой проект. когда нужно какая-то либа, в тот проект записываю зависимость, lein deps, потом из папки lib этого пустого проекта ручками беру либу и кладу её в воркин-фолдер, где все мои рабочие проекты, и дальше про лейн забываю, всё остальное эклипсом делаю
но запланировал почотче освоить этот лейн, он кроме создания болванки и выкачивания зависимостей ещё кучу полезностей делает. ну и комманд-лайн, как некоторым нравится :)