metaclass: (дзедline)
metaclass ([personal profile] metaclass) wrote2013-03-06 03:37 pm
Entry tags:

Java-экосистема

Разбираюсь потиху с Intellij IDEA и скалой. И, как обычно, утыкаюсь в "расхождения по земельному вопросу" с жабными инструментами. Сколько раз это все дело открывал - столько утыкался.

Вот у нас есть на данный момент что: jdk (много разных), мавен(две версии), sbt(аналог мавена для скалы), IDEA и тыщи плагинов под мавен, sbt и идею.
Я прочел документацию по мавену и sbt, но от входа все равно не понимаю, как принято создавать проекты с нуля и как принято их деплоить. Открываешь какой-нибудь пример, а там все заканчивается строкой вида sbt container:start, которая работает исключительно внутри запущенного sbt и с помощью плагина типа "com.github.siasia" %% "xsbt-web-plugin. Или мавен с jetty-плагином.

Предположительно, можно поставить jetty сервисом и деплоить туда приложение в виде war. Но сборка этого war и особенно копирование зависимостей для него для меня темный лес.
Я обычно начинаю с того, что запускаю jetty внутри своего приложения, передавая ему хендлер явно, т.к. таким образом для меня проще понять, что в каком порядке работает и откуда берется конфигурация. Но даже в этом случае количество вариаций на тему "запустить жабу с указанием classpath и main class" просто поражает.
Т.е. запуск из мавена, запуск из sbt, запуск из idea, деплоймент в контейнер и запуск из консоли руками и запуск в виде jar - это все совершенно между собой различающиеся варианты, с разными classpath, разными репозиториями и прочим таким.

Плюс еще несколько десятков версий на каждую зависимость, которые нужно внятно выбрать при добавлении. Слава богу, они хоть не конфликтовали у меня пока.

[identity profile] volodymir-k.livejournal.com 2013-03-06 07:59 pm (UTC)(link)
если ничего не работает, почитайте, наконец, документацию

логгирование настраивается совершенно в разных позах и конфигурациях по малейшей прихоти разработчика

[identity profile] volodymir-k.livejournal.com 2013-03-06 08:02 pm (UTC)(link)
интернеты полны подробными и вменяемыми орейлевскими книжками по всем версиям всего

в них обычно детальные главы как запустить, как собрать, как скопировать файлы

надо быть ииотом, чтобы не понять простые команды "делай раз"
или, что похоже, неанглоязычным

[identity profile] anonim-legion.livejournal.com 2013-03-06 08:09 pm (UTC)(link)
Вы бы не ругались раньше времени.

Инфраструктура - это не отдельные продукты, а их совокупность. В таком проекте используем такой набор в другом - другой. Дайте ссылку на подобную книжку.

[identity profile] dmitry shamov (from livejournal.com) 2013-03-06 08:47 pm (UTC)(link)
ДОКОЛЕ? Я вот с 2000 года перешел на GEDIT именно потому, что понял, что ИДЕ делают какое, то вуду. И избегаю это вуду везде где могу. Я конечно понимаю что кодогенерация спасет мир. Но я хочу чтоб она была по моей просьбе. А по факту припаяют вам АРМ либу и привет, а косяк не ваш.

[identity profile] juan-gandhi.livejournal.com 2013-03-06 09:43 pm (UTC)(link)
This may help:
https://github.com/csoma/Scala-starter

starting sbt project from the scratch

[identity profile] juan-gandhi.livejournal.com 2013-03-06 09:43 pm (UTC)(link)
mvn tomcat:run

[identity profile] juan-gandhi.livejournal.com 2013-03-06 09:44 pm (UTC)(link)
Про рефакторинг что-нибудь слышали?

[identity profile] jdevelop.livejournal.com 2013-03-06 09:48 pm (UTC)(link)
а это тут причем?

[identity profile] juan-gandhi.livejournal.com 2013-03-07 01:02 am (UTC)(link)
при мавне и томкате, сэр

[identity profile] jdevelop.livejournal.com 2013-03-07 01:04 am (UTC)(link)
mvn tomcat:run запустит приложение в томкате, но никак не задеплоит его в него

[identity profile] jdevelop.livejournal.com 2013-03-07 01:06 am (UTC)(link)
что если попросить помощи у товарищей "в теме"?

[identity profile] jdevelop.livejournal.com 2013-03-07 01:07 am (UTC)(link)
не нужно пропагандировать SBT, пусть он умрет в муках

он - в смысле SBT

[identity profile] juan-gandhi.livejournal.com 2013-03-07 01:12 am (UTC)(link)
Откуда тебе известно, что нужно, а что не нужно? И почему самая продвинутая тулза должна вдруг помереть?

[identity profile] jdevelop.livejournal.com 2013-03-07 01:16 am (UTC)(link)
из печального опыта, самая лучшая тулза - это maven

[identity profile] berezovsky.livejournal.com 2013-03-07 01:27 am (UTC)(link)
Ребятки, а чё вы не спите?

[identity profile] juan-gandhi.livejournal.com 2013-03-07 01:28 am (UTC)(link)
Ну я мавна не ругаю, в нём много полезного.

[identity profile] jdevelop.livejournal.com 2013-03-07 01:32 am (UTC)(link)
а чё спать в 8 часов вечера?

[identity profile] jdevelop.livejournal.com 2013-03-07 01:33 am (UTC)(link)
в sbt тоже ничошно, но пройдет еще немало времени, когда им можно будет пользоваться без вуду.

если не умрет в муках, конечно )
Edited 2013-03-07 01:34 (UTC)

[identity profile] juan-gandhi.livejournal.com 2013-03-07 01:38 am (UTC)(link)
Это да; но ведь и про всю скалу такое мнение довольно распространено.

[identity profile] jdevelop.livejournal.com 2013-03-07 01:43 am (UTC)(link)
священных коров мы пока закалывать не будем

[identity profile] evil-invader.livejournal.com 2013-03-07 03:39 am (UTC)(link)
Таких книг наверное нету. Разве что читал как-то книгу, где простым языком описывалось, как поднять проект с использованием Spring, Hibernate и кажется ant на томкате. Т.е. там последовательно описывалось на простом уровне, как разработать простое приложением с использованием этих технологий.
А вот чтобы уже был сравнительный анализ различных фреймворков и тулов - это уже фантастика. Пока сам не помучаешься, не поразбираешься в реальных проектах - ничего не будет.

[identity profile] norguhtar.livejournal.com 2013-03-07 04:18 am (UTC)(link)
Штатный же функционал maven. Там все довольно очевидно.

[identity profile] norguhtar.livejournal.com 2013-03-07 04:19 am (UTC)(link)
maven имеет смысл использовать если у проекта есть зависимости от сторонних библиотек. Тогда нет головной боли с их вытягиванием и подкладыванием. Оно само это делает.

[identity profile] norguhtar.livejournal.com 2013-03-07 04:22 am (UTC)(link)

Но сборка этого war и особенно копирование зависимостей для него для меня темный лес.

Эм. maven как раз был придуман для того чтобы оно само. Прописываем зависимости, указываем в target war далее mvn package получаем на выходе готовый war.


Я обычно начинаю с того, что запускаю jetty внутри своего приложения, передавая ему хендлер явно, т.к. таким образом для меня проще понять, что в каком порядке работает и откуда берется конфигурация. Но даже в этом случае количество вариаций на тему "запустить жабу с указанием classpath и main class" просто поражает.

Откройте для себя уже web servlet spec. Реально проще жить станет. Там одна точка входа WEB-INF/web.xml

[identity profile] metaclass.livejournal.com 2013-03-07 06:05 am (UTC)(link)
Они в часовых поясах заокраинного запада :)

Page 2 of 3