С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
 Аватар для Klendathu
6 / 6 / 0
Регистрация: 10.11.2011
Сообщений: 53

Maven-Dependency Plugin - понять логику плагина

02.07.2018, 14:40. Показов 2616. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Подключил внешнюю библиотеку в свой Intellij IDEA проект через Maven:
XML
1
2
3
4
5
<dependency>
    <groupId>pl.jsolve</groupId>
    <artifactId>templ4docx</artifactId>
    <version>2.0.2</version>
</dependency>
В итоге, проект собирается, но, во время выполнения приложения, при задействовании функционала из этой библиотеки вываливается ClassNotFoundError.

Решил следующим образом:

В главном POM-файле проекта уже было описание maven-dependency-plugin:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 <pluginManagement>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.1</version>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>prepare-package</phase>
                    <goals>
                         <goal>copy-dependencies</goal>
                     </goals>
                     <configuration>
                         <outputDirectory>${project.build.directory}/classes/lib</outputDirectory>
                         <includeScope>runtime</includeScope>
                     </configuration>
                 </execution>
             </executions>
         </plugin>  
     </plugins>
</pluginManagement>
Поэтому, я всего лишь инициализировал его в POM-файле дочернего модуля:
XML
1
2
3
4
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
</plugin>
В итоге, после сборки проекта, у меня куча библиотек(транзитивных) в "target/classes/lib", и сам JAR теперь весит 30Mb, вместо 16Mb.

Есть вопросы:
1. Зачем нужен maven-dependency-plugin?
2. Почему свою библиотеку я обязательно должен копировать в target?
3. Насколько критично то, что размер JAR-файла увеличился настолько?
4. Как правильно стоило подключать внешнюю библиотеку?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.07.2018, 14:40
Ответы с готовыми решениями:

Работа c maven dependency plugin
1. Кто-нибудь пользовался этим плагином? 2. Каким образом он определяет ненужные зависимости? 3. Если у меня в коде нигде не...

Maven dependency scope
Зачем в Maven есть такое понятие как dependency scope? Например, JUnit можно поместить в test scope. А как наличие этой зависимости может...

Maven: Dependency not found
Добрый день. Создал проект с описанием в pom файле: &lt;groupId&gt;it.group.com&lt;/groupId&gt; ...

3
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
03.07.2018, 01:05
1. maven-dependency-plugin предоставляет возможность как-то манипулировать вашими зависимостями при сборке. Например он может вывести список зависимостей конкретного модуля, скопировать их куда-либо, и т.п. Все goals этого плагина описаны тут - https://maven.apache.org/plugi... cy-plugin/
Судя по тому куску пома, что вы привели, у вас используется goal copy-dependencies. Он как раз и занимается копирование всех зависимостей в определённую папку.
2. Тут сложно ответить на ваш вопрос без знания вашего проекта. Вы собираете всю вашу программу в один большой jar? Или пакуете, может быть в zip архив?
3. Это уже зависит от вас. Готовы ли ваши пользователи качать 30Mи вместо 16Mb?
В современном мире, 30 мегабайт не должно вызывать проблем. Огромное количество программ занимаются гораздо больше места.
Самой JVM не составит труда иметь такой большой jar в classpath. Никаких тормозов от этого не будет.
4. Добавляете зависимость в секцию dependencies. Вроде, вы всё правильно сделали.
Дальше всё опять же зависит, как вы распространяете своё приложение. В виде zip, в виде jar, в виде exe или ещё как.
0
 Аватар для Klendathu
6 / 6 / 0
Регистрация: 10.11.2011
Сообщений: 53
03.07.2018, 06:36  [ТС]
Цитата Сообщение от turbanoff Посмотреть сообщение
2. Тут сложно ответить на ваш вопрос без знания вашего проекта. Вы собираете всю вашу программу в один большой jar? Или пакуете, может быть в zip архив?
3. Это уже зависит от вас. Готовы ли ваши пользователи качать 30Mи вместо 16Mb?
В современном мире, 30 мегабайт не должно вызывать проблем. Огромное количество программ занимаются гораздо больше места.
Самой JVM не составит труда иметь такой большой jar в classpath. Никаких тормозов от этого не будет.
Собираем проект в Jar и ложим в Tomcat. Приложение крутится на сервере.

Цитата Сообщение от turbanoff Посмотреть сообщение
4. Добавляете зависимость в секцию dependencies. Вроде, вы всё правильно сделали.
Дальше всё опять же зависит, как вы распространяете своё приложение. В виде zip, в виде jar, в виде exe или ещё как.
Так почему именно моя библиотека должна лежать в output директории(target)? Если я просто подключаю ее, то во время выполнения приложения она не видна.
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
03.07.2018, 12:01
Цитата Сообщение от Klendathu Посмотреть сообщение
Собираем проект в Jar и ложим в Tomcat
Обычно в tomcat деплоят war-ник, а не jar. Вы уверены, что именно jar используется?

Цитата Сообщение от Klendathu Посмотреть сообщение
Так почему именно моя библиотека должна лежать в output директории(target)?
Вы не показали полный pom.xml. Не понятно, как собираете ваш финальный артифакт для деплоя. Всё зависит от этого.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.07.2018, 12:01
Помогаю со студенческими работами здесь

Проблема в xml файле проекта Maven (element dependency cannot have character children)
Здравствуйте, осваиваю Java Spring и столкнулся с проблемой: Создал простой проект Maven, добавил Framework Spring и при попытке...

Maven JavaFX plugin
Друзья, вкратце. Написал приложение на JavaFX. Средствами IntelliJ IDEA запаковал JAR File, но для ее запуска нужна Java, а это неудобно...

Maven shade plugin
Здравствуйте! Подскажите пожалуйста, что делать: есть проект с использованием Maven. Вот содержимое pom.xml: &lt;?xml...

Maven-jaxb2-plugin + WSDL
В pom.xml есть следующая ветка: &lt;plugin&gt; &lt;groupId&gt;org.jvnet.jaxb2.maven2&lt;/groupId&gt; ...

Maven assembly plugin и русские символы
Всем привет! Есть проект который собирается maven. Для сборки архива используется maven-assembly-plugin, все бы ничего но эта зараза...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru