Яка мета залежності-зменшеного-pom.xml, згенерованого плагіном тіней?


80

Я прочитав документи і не знайшов нічого, що говорить про те, для чого він використовується.


1
Хіба це не відносно ясно в документі Mojo: maven.apache.org/plugins/maven-shade-plugin/… ?
Томе

7
Ні, там немає нічого про його призначення.
Трансценденція

5
Ну, якщо у вас є модуль A із залежностями X і затінює деякі з них у певному JAR (A-shaded.jar), то вам не будуть потрібні ці затінені залежності, якщо ви хочете залежати від A-shaded.jar A.jar. Отже, плагін створює pom.xml, що містить лише Y незатінені залежності.
Томе

Відповіді:


48

Тінь: тінь Моджо досить добре задокументована, тут особливо про createDependencyReducedPomпараметр, який створить цей dependency-reduced-pom.xmlфайл:maven-shade-plugin/shade-mojo.html#createDependencyReducedPom

Коротше кажучи, це досить корисно, якщо ви маєте намір використовувати затінений JAR (замість звичайного JAR) як залежність для іншого модуля. Це dependency-reduced-pom.xmlне буде містити JAR-файли, вже наявні в затіненому, уникаючи марного дублювання.


46
Я не впевнений, що згоден з тим, що щось про mvn добре задокументовано, технологію за своєю суттю важко зрозуміти. Було б корисно зрозуміти, як користуватися залежністю-зменшеною-pom.xml. Де і як його слід використовувати.
Скотт Борінг

1
Вище @ScottBoring запитує, куди слід додати налаштування. Він міститься в блоці конфігурації, і є приклад цього блоку у визначенні плагіна на сторінці використання плагіна maven .
Джеремі Д.

6
Але як, коли ви залежате від затіненої баночки, ви отримуєте для цього використання drp?
OrangeDog 02

Чи не використовує плагін цей drp як проектну пам'ять, якщо він налаштований на створення (наприклад, для фаз встановлення та розгортання)?
Томе,

3
@JeremyD він не запитує, де використовувати налаштування, він запитує, де використовувати згенерований POM.
Шеннон,

25

Я прочитав документи близько сотні разів чи близько того, і досі не міг зрозуміти, для чого це, який насправді варіант використання.

Нарешті, це те, що я думаю: скажімо, у вас є проект із залежностями A, B, C, D, E. Під час pom.xmlналаштування плагіна тіні таким чином, що коли він створює uber-jar (називайте його foo.jar), він включає A, B, C у затінену банку, але з якоїсь причини ви вирішили не включати D, E у затінену банку, хоча ваш проект залежить від них - приклад - залежності, які потрібні лише для тестування (наприклад, будь-яка залежність який має scopeвід testі не входить в затіненій банку). У ньому dependency-reduced-pom.xmlбуде визначено D, E. Ідея полягає в тому, що якщо хтось хоче скористатися foo.jarнаведеним dependency-reduced-pom.xmlпідказкою про те, що обережно foo.jarвідсутня залежність D, E у ньому - використовуйте на свій страх і ризик. Тоді ви можете вирішити явно додати D, E у проект, який буде використовуватиfoo.jar.

Отже, dependency-reduced-pom.xmlце більше схоже missing-dependencies.xmlі перераховує залежності, яких не вистачає в uber-jar, який виводиться плагіном тіні.


7
Чи можете ви підтвердити, чи з часом це розуміння виявилося правильним?
Anir
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.