metaclass: (дзедline)
[personal profile] metaclass
Разбираюсь потиху с 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, разными репозиториями и прочим таким.

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

Date: 2013-03-06 01:09 pm (UTC)
From: [identity profile] ivan sopov (from livejournal.com)
Таких граблей только навскидку можно придумать еще много:
- по дефолту все ресурсы не исходники лежат у мавена в отдельной папке src/main/resources, но у большей части проектов в реальном мире в конфиге maven-resource-plugin прописано, что ресурсы могут лежать и вместе с исходниками тоже. Причем обычно это прописано в каком-нибудь родительском поме. Поначалу меня обескураживало, почему в одном проекте работает, а в другом - нет.
- classpath конечно один, но даже в самом простом случае, их на самом деле два - для компиляции и для запуска. Если использовать системы сборки, то этих classpath-ов оказывается гораздо больше - test, compile, runtime, container - и у IDE представления о том,что куда входит и сколько их всего может не совпадать с системой сборки (подозреваю, что на этом месте люди начинают обратно любить ant, где конкретно эти нюансы как правило прописываются явно руками).
- логирование (сколько боли в одном этом слове)
- вы забыли запуск из IDE собранного там же war VS запуск из IDE собранного проекта но не запакованного в war (exploded в терминах Idea) VS запуск непосредственно проекта (не знаю, есть ли это в Idea - в Eclipse это есть в нескольких вариантах разными плагинами)


На самом деле за это Java-экосистему и любим, что какого-то одного пути обязательного для всех не навязывается.

Date: 2013-03-06 01:42 pm (UTC)
From: [identity profile] prepor.livejournal.com
> - логирование (сколько боли в одном этом слове)

ох, слава богу, я был почти уверен, что я слишком глуп для ява-штук, раз мне вывод строчек в стдаут так мозг рвет.

Date: 2013-03-06 01:48 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Логи да, тема вечная :)

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

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

Date: 2013-03-06 01:09 pm (UTC)
From: [identity profile] evil-invader.livejournal.com
а зачем тебе джетти? Чем томкат не угодил?

Date: 2013-03-06 01:46 pm (UTC)
From: [identity profile] metaclass.livejournal.com
По привычке. Я его для кложури использую, соответственно, хотя бы это не приходится изучать с нуля.

Date: 2013-03-06 01:51 pm (UTC)
From: [identity profile] evil-invader.livejournal.com
Просто томкат для экслипса и идеи легко настраивается. В эклипсе немного попахивает шаманизмом, но вот идея слёту конфигурится.
Для работы и тестирования веб-приложения (не важно скала или джава) проще использовать томкат. Jetty это уже, если нужно запускать прилагу, как стенделон, но со своим веб-сервером.
Для простых случаев в jdk вообще есть свой миниатюрный веб-сервер, который подымается в две строчки.

Date: 2013-03-06 01:59 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Вот я в основном и запускаю приложение сам, с встроенным веб-сервером.

Date: 2013-03-06 02:15 pm (UTC)
From: [identity profile] evil-invader.livejournal.com
А веб-сервер для чего? Чтобы организовать общение rest/soap?

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2013-03-06 02:25 pm (UTC) - Expand

(no subject)

From: [identity profile] jdevelop.livejournal.com - Date: 2013-03-06 04:41 pm (UTC) - Expand

Date: 2013-03-06 02:04 pm (UTC)
From: [identity profile] nealar.livejournal.com
Вот мне щаз ВНЕЗАПНО потребовалось научиться собирать под томкэт. В идеале, раввинским способом, одной строчкой на шелле. Но идеей или эклипсой тоже покатило бы. Даже не скажу, что для меня будет лучше: знакомые спецы по жабе любят идею, а спецы по ынтырпрайзу - эклипсу. Сам вообще не шарю.

Date: 2013-03-06 02:14 pm (UTC)
From: [identity profile] evil-invader.livejournal.com
Если только собирать, то достаточно, чтобы проект был ant или мавен. Билдишь, а дальше подкладываешь томкату и запускаешь. По идее можно научить ант или мавен сразу подкладывать куда надо. Чисто раввинатский способ - никакой IDE. Только консоль - только хардкор.

(no subject)

From: [identity profile] nealar.livejournal.com - Date: 2013-03-06 04:11 pm (UTC) - Expand

(no subject)

From: [identity profile] jdevelop.livejournal.com - Date: 2013-03-06 04:41 pm (UTC) - Expand

(no subject)

From: [identity profile] evil-invader.livejournal.com - Date: 2013-03-06 05:40 pm (UTC) - Expand

(no subject)

From: [identity profile] jdevelop.livejournal.com - Date: 2013-03-06 05:59 pm (UTC) - Expand

(no subject)

From: [identity profile] evil-invader.livejournal.com - Date: 2013-03-06 06:06 pm (UTC) - Expand

(no subject)

From: [identity profile] jdevelop.livejournal.com - Date: 2013-03-06 06:10 pm (UTC) - Expand

(no subject)

From: [identity profile] nealar.livejournal.com - Date: 2013-03-06 07:17 pm (UTC) - Expand

(no subject)

From: [identity profile] jdevelop.livejournal.com - Date: 2013-03-07 01:06 am (UTC) - Expand

(no subject)

From: [identity profile] nealar.livejournal.com - Date: 2013-03-07 06:26 am (UTC) - Expand

(no subject)

From: [identity profile] jdevelop.livejournal.com - Date: 2013-03-07 06:33 am (UTC) - Expand

(no subject)

From: [identity profile] norguhtar.livejournal.com - Date: 2013-03-07 04:19 am (UTC) - Expand

(no subject)

From: [identity profile] evil-invader.livejournal.com - Date: 2013-03-07 06:16 am (UTC) - Expand

(no subject)

From: [identity profile] juan-gandhi.livejournal.com - Date: 2013-03-06 09:43 pm (UTC) - Expand

(no subject)

From: [identity profile] jdevelop.livejournal.com - Date: 2013-03-06 09:48 pm (UTC) - Expand

(no subject)

From: [identity profile] juan-gandhi.livejournal.com - Date: 2013-03-07 01:02 am (UTC) - Expand

(no subject)

From: [identity profile] jdevelop.livejournal.com - Date: 2013-03-07 01:04 am (UTC) - Expand

(no subject)

From: [identity profile] evil-invader.livejournal.com - Date: 2013-03-06 04:46 pm (UTC) - Expand

(no subject)

From: [identity profile] nealar.livejournal.com - Date: 2013-03-06 07:14 pm (UTC) - Expand

(no subject)

From: [identity profile] norguhtar.livejournal.com - Date: 2013-03-07 04:18 am (UTC) - Expand

Date: 2013-03-06 05:06 pm (UTC)
From: [identity profile] anonim-legion.livejournal.com
А maven archetype не поможет?

Date: 2013-03-06 06:08 pm (UTC)
From: [identity profile] jdevelop.livejournal.com
ребе не любит читать, ребе надо "сделать мне заебись и сразу", что тут непонятного?

Date: 2013-03-06 06:13 pm (UTC)
From: [identity profile] anonim-legion.livejournal.com
Я даже и не знаю, что можно читать по инфраструктуре явы. Если читать интернет, то там 90% - разговор одного идиота с другим.

Date: 2013-03-06 06:17 pm (UTC)
From: [identity profile] jdevelop.livejournal.com
каждый понимает под "инфраструктурой" что-то свое, и получается разговор слепого с глухим

мне вот например близок и доступен maven, кто-то дрочит на sbt, кому-то gradle, все эти системы сборки автоматически накладывают правила ведения проекта в исходниках

только ант более-менее универсален, но там появляются сотни xml

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

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

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

(no subject)

From: [identity profile] anonim-legion.livejournal.com - Date: 2013-03-06 08:09 pm (UTC) - Expand

(no subject)

From: [identity profile] evil-invader.livejournal.com - Date: 2013-03-07 03:39 am (UTC) - Expand

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

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

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

starting sbt project from the scratch

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

он - в смысле SBT

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

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

(no subject)

From: [identity profile] berezovsky.livejournal.com - Date: 2013-03-07 01:27 am (UTC) - Expand

(no subject)

From: [identity profile] jdevelop.livejournal.com - Date: 2013-03-07 01:32 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2013-03-07 06:05 am (UTC) - Expand

(no subject)

From: [identity profile] juan-gandhi.livejournal.com - Date: 2013-03-07 01:28 am (UTC) - Expand

(no subject)

From: [identity profile] jdevelop.livejournal.com - Date: 2013-03-07 01:33 am (UTC) - Expand

(no subject)

From: [identity profile] juan-gandhi.livejournal.com - Date: 2013-03-07 01:38 am (UTC) - Expand

(no subject)

From: [identity profile] jdevelop.livejournal.com - Date: 2013-03-07 01:43 am (UTC) - Expand

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

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

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


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

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

Date: 2013-03-07 06:06 am (UTC)
From: [identity profile] metaclass.livejournal.com
Да, я пока web.xml и сделал

Date: 2013-03-07 09:57 am (UTC)
From: [identity profile] tonsky.livejournal.com
lein ring server-headless :)

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 14th, 2025 03:24 am
Powered by Dreamwidth Studios