powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Сборка модуля в Maven
17 сообщений из 17, страница 1 из 1
Сборка модуля в Maven
    #40076770
NullPointer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.

Давно пользуюсь gradle и забыл совсем мавен.

Есть parent-проект Maven: mParent, и 4 дочерних модуля client, model, api, application

client, model, api, - это обычные jar
application - приложение, которое подключает в зависимостях model и api

Надо собрать client таким образом, чтобы в результирующий jar легли jar'ы с model и api . Как это можно сделать? Какой плагин для сборки использовать и с какими настройками?
...
Рейтинг: 0 / 0
Сборка модуля в Maven
    #40076782
gmugar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вы хотите чтобы итоговый JAR содержал именно JAR-ы или клaссы из них?
если классы то: https://maven.apache.org/plugins/maven-shade-plugin/

если именно JAR-ы, то что вы пытаетесь сделать? OSGi bandle? executable JAR в стиле Spring Boot?
JAR c JAR-ми это не то, что Java поддерживает "по умолчанию".
...
Рейтинг: 0 / 0
Сборка модуля в Maven
    #40076783
Чаще всего это либо maven-assembly-plugin ( пример ), либо maven-shade-plugin .
...
Рейтинг: 0 / 0
Сборка модуля в Maven
    #40076784
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NullPointer,

Это ?!

<:o)
...
Рейтинг: 0 / 0
Сборка модуля в Maven
    #40076798
gmugar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это, на самом деле, увлекательная тема :)


shade plugin это самый простой путь и самый плохой:
1. внутри JAR-a получается помойка
2. а если у вас там в разных JAR-ax ресурсы с одинаковым именем, что очень не редкость? да, Resource Transformer, но бывают болезненные неожиданности
вообщем: такое себе.
но из-за простоты пользуются все, и даже некоторые фреймворки прямо рекомендуют:
e.g. https://www.dropwizard.io/en/latest/getting-started.html#running-your-application (хороший пример конфигурации там, кстати)


есть еще 10+ лет как заброшенный one-jar plugin, который даже работает до сих пор (я как раз пробовал с полгода назад c Java 8)
однако, из-за возраста, оно не без нюансов и Multi-Release Jar, очевидно, не поддерживается.
вообщем: настоятельно не рекомендую
(кстати то, что никак аналогов в экосистеме за более чем 10 лет так и не появилось, как бы намекает, что нафиг оно никому и не надо)


как по мне, самый "чистый" путь это "deployable archive":
1. Java поддерживает "Class-Path" в манифесте
2. идея в том, что все библиотеки прописываем в манифест (jar plugin умеет; это, собственно, maven и называет "executable jar"), а потом собраем ZIP c нашим JAR и всеми библиотеками
3. ZIP поддерживаемый maven-артифакт: можно дать ему версию, classifier, можно засунуть его в репозиторий
4. ну а развертывание: достать из репозитория, распаковать и запустить c "java -jar myapp.jar"
большое достоинство в том, что это абсолютно стандартный путь: никаких custom classloader-ов, никаких "хитро замешанных" JAR-ов
недостатки: гораздо более сложная конфигурация в maven(с участием трех плагинов); и один, дополнительный, шаг при развертывании (распаковать)


P.S. простите за оффтоп :)
...
Рейтинг: 0 / 0
Сборка модуля в Maven
    #40076857
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NullPointer
собрать client таким образом, чтобы в результирующий jar легли jar'ы с model и api

- если в модуле client есть зависимости (секция dependency) на model и api, то они сами туда подтянутся без дополнительных усилий
...
Рейтинг: 0 / 0
Сборка модуля в Maven
    #40076893
NullPointer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kachalov
NullPointer
собрать client таким образом, чтобы в результирующий jar легли jar'ы с model и api

- если в модуле client есть зависимости (секция dependency) на model и api, то они сами туда подтянутся без дополнительных усилий
не подтягиваются
...
Рейтинг: 0 / 0
Сборка модуля в Maven
    #40076894
NullPointer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
итоговая цель - этот client.jar должен быть отторгаемый.

я хочу положить его в нексус и передать другим командам
...
Рейтинг: 0 / 0
Сборка модуля в Maven
    #40076896
NullPointer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maven-assembly-plugin делает jar с классами, пускай так, но внутри укладывает вообще все зависимости. И спринг, и все на свете.

Нужно положить только содержимое этих 2 jar'ников
...
Рейтинг: 0 / 0
Сборка модуля в Maven
    #40076899
NullPointer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
shade plugin работает великолепно:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                    </execution>
                </executions>

                <configuration>
                    <filters>
                        <filter>
                            <artifact>*:*</artifact>
                            <includes>
                                <include>my/package/**</include>
                            </includes>
                        </filter>
                    </filters>
                </configuration>
            </plugin>
        </plugins>
...
Рейтинг: 0 / 0
Сборка модуля в Maven
    #40076911
gmugar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NullPointerитоговая цель - этот client.jar должен быть отторгаемый.

я хочу положить его в нексус и передать другим командам


я не совсем понимаю что вы имеете ввиду под "отторгаемый"?

и если вы деплоите артефакт в Nexus, то зачем огород городить? люди же транзитивно все нужные зависимости получат, не?
...
Рейтинг: 0 / 0
Сборка модуля в Maven
    #40076984
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NullPointer
итоговая цель - этот client.jar должен быть отторгаемый.

я хочу положить его в нексус и передать другим командам


Это мягко скажем не правильный путь.
Nexus, и вообще maven repository как раз для того, чтобы такие странности не городить.

<:o)
...
Рейтинг: 0 / 0
Сборка модуля в Maven
    #40077017
NullPointer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mad_nazgul
NullPointer
итоговая цель - этот client.jar должен быть отторгаемый.

я хочу положить его в нексус и передать другим командам


Это мягко скажем не правильный путь.
Nexus, и вообще maven repository как раз для того, чтобы такие странности не городить.

<:o)
да, знаю. Но у нас подобным образом организован процесс паблиша в него. Местные особенности.
...
Рейтинг: 0 / 0
Сборка модуля в Maven
    #40077056
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NullPointer
mad_nazgul
пропущено...


Это мягко скажем не правильный путь.
Nexus, и вообще maven repository как раз для того, чтобы такие странности не городить.

<:o)
да, знаю. Но у нас подобным образом организован процесс паблиша в него. Местные особенности.


Странные особенности.
Я бы всё таки уточнил "нафига?!"

Может просто кто-то глупость спорол. :-)
...
Рейтинг: 0 / 0
Сборка модуля в Maven
    #40077367
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
через докер шас это все делается
...
Рейтинг: 0 / 0
Сборка модуля в Maven
    #40077371
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NullPointer
Как это можно сделать? Какой плагин для сборки использовать и с какими настройками?

docker image собери их своих джарников ,запушь его на докерхаб и твои коллеги смогут это юзать потом без каких либо проблем
...
Рейтинг: 0 / 0
Сборка модуля в Maven
    #40077450
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
через докер шас это все делается


Докер перпендекулярен maven-repository.

А с учётом Spring-Boot всё равно собирается fat-jar

Но создавать артефакт fat-jar это странность.

Тут либо ТС что-то не понял, либо кто-то сделал глупость, а все за ним не думая повторили.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Сборка модуля в Maven
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]