LINUX.ORG.RU

Ответ на: комментарий от Deleted

Да, shade plugin для этого наиболее правильное решение. Мы раньше использовали для этого bundle plugin (подсмотрели решение в каком-то opensource проекте), но там нет возможности разрешить конфликты которые случаются, например, в папках META-INF

maxcom ★★★★★
()

Вообще мне показалось надежнее все зависимости класть в ./lib без распаковки и в манифесте прописывать classpath, оно, конечно, не так элегантно, как один мегаджарник, но есть в этом запаковывании какой-то привкус хака. http://stackoverflow.com/a/4323501 тут написано, как в мавене автоматизировать такое.

Legioner ★★★★★
()
Ответ на: комментарий от Deleted

Ну, я использовал нагугленный assembly plugin, который пихает в джарничек кучу мусора, а хорошую доку по его настройке так и не нашел. Точнее, нашел, что её там искать-то, но быстро пробежав по ссылкам не обнаружил ничего полезного для меня.

jdev
() автор топика
Ответ на: комментарий от maxcom

вот из-за поетнциальных конфликтов в META-INF, особенно в META-INF/services собирать uber-jar ябы не стал, не там есть решение в виде ServicesResourceTransformer но это как то неприятно

Deleted
()
Ответ на: комментарий от Legioner

возможно что реализация своего classloader который будет грузить jar-ы запакованные в текущий jar элегантнее

Deleted
()
Ответ на: комментарий от jdev

без лишней надобность ваять uber-jar не стоит, а нормальное ПО с продуманной архитекутурой сможет грузить jar хоть с того света, потому что часто понадобятся плагины, с реализацией их поддержи в изолированных лоадерах, окажется что собрать jar-ы по углам - дело вообще плевое

Deleted
()
Ответ на: комментарий от Deleted

Ну хочется java -jar myprog.jar и без лишних заморочек. Хотя почему стандартная jvm не подгружает jar-ки рекурсивно их какого-нибудь META-INF/lib, не совсем понятно.

Legioner ★★★★★
()
Ответ на: комментарий от jdev

Там, где я смотрел, не пакуют, а используют скрипты на sh/bat, формирующие командную строку и запускающие jvm или свои маленькие бинарники, делающие то же самое. Но решения крутых проектов не всегда оптимальны для всех проектов.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

ага, потому что напихать classpath - тупое решение в лоб, то что пользователю потом париться со скриптами их не волнует 8)

более серьезные мужики ваяют загрузчик под нужную ось (например так в нетбинсе и еклипсе)

Deleted
()
Ответ на: комментарий от Legioner

ну как бы мое предложение к такой форме запуска и приводит, с точки зрения юзера, да.

почему стандартная jvm не подгружает jar-ки рекурсивно их какого-нибудь META-INF/lib, не совсем понятно.

может jigsaw тут чтонить поменяет

Deleted
()
Ответ на: комментарий от Legioner

Ну хочется java -jar myprog.jar и без лишних заморочек.

Если это нужно для создания десктопного приложения, то тогда плагин к ProGuard может сгодиться. Он умеет несколько жарников соединять в один, но главное - он умеет удалять лишний код и по желанию делать обфускацию.

dave ★★★★★
()

Либо инсталятор, как например в squirrel sql client (http://www.squirrelsql.org/) java -jar program_install.jar, либо java web start.
Объединять проект в один jar очень плохое решение и оно тупо не работает для мало мальски среднего проекта.

vtVitus ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.