Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 Сборка модуля в Maven  [new]
NullPointer
Member

Откуда:
Сообщений: 25
Всем привет.

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

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

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

Надо собрать client таким образом, чтобы в результирующий jar легли jar'ы с model и api . Как это можно сделать? Какой плагин для сборки использовать и с какими настройками?
10 июн 21, 01:08    [22333560]     Ответить | Цитировать Сообщить модератору
 Re: Сборка модуля в Maven  [new]
gmugar
Member

Откуда:
Сообщений: 23
вы хотите чтобы итоговый JAR содержал именно JAR-ы или клaссы из них?
если классы то: https://maven.apache.org/plugins/maven-shade-plugin/

если именно JAR-ы, то что вы пытаетесь сделать? OSGi bandle? executable JAR в стиле Spring Boot?
JAR c JAR-ми это не то, что Java поддерживает "по умолчанию".

Сообщение было отредактировано: 10 июн 21, 08:48
10 июн 21, 08:56    [22333577]     Ответить | Цитировать Сообщить модератору
 Re: Сборка модуля в Maven  [new]
Stanislav Bashkyrtsev
Member

Откуда: СПб
Сообщений: 142
Чаще всего это либо maven-assembly-plugin (пример), либо maven-shade-plugin.
10 июн 21, 08:57    [22333578]     Ответить | Цитировать Сообщить модератору
 Re: Сборка модуля в Maven  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5688
NullPointer,

Это?!

<:o)
10 июн 21, 09:03    [22333580]     Ответить | Цитировать Сообщить модератору
 Re: Сборка модуля в Maven  [new]
gmugar
Member

Откуда:
Сообщений: 23
это, на самом деле, увлекательная тема :)


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. простите за оффтоп :)
10 июн 21, 10:16    [22333620]     Ответить | Цитировать Сообщить модератору
 Re: Сборка модуля в Maven  [new]
Kachalov
Member

Откуда: Москва
Сообщений: 5817
NullPointer
собрать client таким образом, чтобы в результирующий jar легли jar'ы с model и api

- если в модуле client есть зависимости (секция dependency) на model и api, то они сами туда подтянутся без дополнительных усилий
10 июн 21, 12:53    [22333721]     Ответить | Цитировать Сообщить модератору
 Re: Сборка модуля в Maven  [new]
NullPointer
Member

Откуда:
Сообщений: 25
Kachalov
NullPointer
собрать client таким образом, чтобы в результирующий jar легли jar'ы с model и api

- если в модуле client есть зависимости (секция dependency) на model и api, то они сами туда подтянутся без дополнительных усилий
не подтягиваются
10 июн 21, 13:52    [22333803]     Ответить | Цитировать Сообщить модератору
 Re: Сборка модуля в Maven  [new]
NullPointer
Member

Откуда:
Сообщений: 25
итоговая цель - этот client.jar должен быть отторгаемый.

я хочу положить его в нексус и передать другим командам
10 июн 21, 13:53    [22333806]     Ответить | Цитировать Сообщить модератору
 Re: Сборка модуля в Maven  [new]
NullPointer
Member

Откуда:
Сообщений: 25
maven-assembly-plugin делает jar с классами, пускай так, но внутри укладывает вообще все зависимости. И спринг, и все на свете.

Нужно положить только содержимое этих 2 jar'ников
10 июн 21, 13:58    [22333813]     Ответить | Цитировать Сообщить модератору
 Re: Сборка модуля в Maven  [new]
NullPointer
Member

Откуда:
Сообщений: 25
shade plugin работает великолепно:

        <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>
10 июн 21, 14:06    [22333821]     Ответить | Цитировать Сообщить модератору
 Re: Сборка модуля в Maven  [new]
gmugar
Member

Откуда:
Сообщений: 23
NullPointer
итоговая цель - этот client.jar должен быть отторгаемый.

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


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

и если вы деплоите артефакт в Nexus, то зачем огород городить? люди же транзитивно все нужные зависимости получат, не?
10 июн 21, 14:26    [22333842]     Ответить | Цитировать Сообщить модератору
 Re: Сборка модуля в Maven  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5688
NullPointer
итоговая цель - этот client.jar должен быть отторгаемый.

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


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

<:o)
10 июн 21, 17:49    [22333986]     Ответить | Цитировать Сообщить модератору
 Re: Сборка модуля в Maven  [new]
NullPointer
Member

Откуда:
Сообщений: 25
mad_nazgul
NullPointer
итоговая цель - этот client.jar должен быть отторгаемый.

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


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

<:o)
да, знаю. Но у нас подобным образом организован процесс паблиша в него. Местные особенности.
10 июн 21, 19:45    [22334081]     Ответить | Цитировать Сообщить модератору
 Re: Сборка модуля в Maven  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5688
NullPointer
mad_nazgul
пропущено...


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

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


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

Может просто кто-то глупость спорол. :-)
11 июн 21, 08:14    [22334165]     Ответить | Цитировать Сообщить модератору
 Re: Сборка модуля в Maven  [new]
asv79
Member

Откуда: Тверь
Сообщений: 3329
через докер шас это все делается
12 июн 21, 20:33    [22334748]     Ответить | Цитировать Сообщить модератору
 Re: Сборка модуля в Maven  [new]
asv79
Member

Откуда: Тверь
Сообщений: 3329
NullPointer
Как это можно сделать? Какой плагин для сборки использовать и с какими настройками?

docker image собери их своих джарников ,запушь его на докерхаб и твои коллеги смогут это юзать потом без каких либо проблем
12 июн 21, 20:42    [22334753]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить