Яка мета залежності-зменшеного-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.