2016-02-02 2 views
9

Is dependency-reduced-pom.xml Создано Maven shade pluginавтоматически использовано в проектах, которые зависят от убержара (вместо обычного pom.xml)?Является ли dependency-reduced-pom.xml автоматически использоваться вместо pom.xml?

Просить это после прочтения ряда вопросов зависимостях уменьшенного pom.xml, связанные и не основывая ответ:

Maven shade plugin adding dependency-reduced-pom.xml to base directory

What is the purpose of dependency-reduced-pom.xml generated by the shade plugin?

What is `dependency-reduced-pom.xml` file which created when calling maven package command?

ответ

13

dependency-reduced-pom.xml является созданный во время сборки в ${basedir} проекта. Этот файл является временным файлом, который используется только для упаковки в затененную банку. Указание документации атрибута createDependencyReducedPom:

Отметьте, следует ли создавать упрощенную POM для затененного артефакта. Если установлено значение true, зависимости, которые были включены в uber JAR, будут удалены из раздела <dependencies> генерируемого ПОМ. Сокращенный POM будет называться dependency-reduced-pom.xml и составляет , сохраненный в том же каталоге, что и затененный артефакт. Если вы также не укажете dependencyReducedPomLocation, плагин создаст временный файл по имени dependency-reduced-pom.xml в проекте basedir.

Для того, чтобы понять, после того, как maven-shade-plugin закончилась:

  • ваш первоначальный POM будет оставлен без изменений;
  • временный файл, который можно полностью игнорировать с именем dependency-reduced-pom.xml, будет сгенерирован внутри корневой папки (this is considered an open issue with this plugin);
  • Затененный артефакт будет содержать ваш первоначальный POM без изменений внутри каталога META-INF, а не сокращенный POM (это не очень важно, но лучше упомянуть об этом - возникла проблема с этим, которая была автоматически закрыта: MSHADE-36);
  • POM, который будет развернут, - это уменьшенный POM;
  • Затененный артефакт будет по умолчанию основным артефактом проекта.
+0

Спасибо, и я задался вопросом, где пропал ваш ответ :) Пара очков еще не ясна: 1) Если это * временный * файл, почему он не удалил послесловие? 2) Итак, ответ НЕТ? Из-за вопроса MSHADE-36 вы упомянули? 3) Если MSHADE-36 получил исправление, а зависимость уменьшила pom, чтобы заменить упакованный pom.xml, ответ станет ДА? :) – Stas

+1

1) Не знаю. Думаю, его можно было бы удалить, да. Я не мог найти проблему. 2) и 3) На самом деле POM внутри папки META-INF является просто информативным, поэтому не важно, что это не сокращение POM. Важным является то, что развернутый POM будет уменьшенным POM. Поэтому, если вы зависите от затененного артефакта, вы будете зависеть от уменьшенной POM (которая будет эффективно заменять «начальную» POM). – Tunaki

+1

@StasS Перечитывая ваш вопрос, да, это ДА :). – Tunaki