Подтвердить что ты не робот

Плагин maven shade, добавляющий зависимую-reduced-pom.xml в базовый каталог

Плагин maven shade создает файл с именем dependency-reduced-pom.xml, а также artifactname-shaded.jar и помещает их в базовый каталог.

Это ошибка? Должно быть в целевом каталоге. Любое обходное решение?

4b9b3361

Ответ 1

Вы можете избежать его создания, установив createDependencyReducedPom в false.

например.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>${maven-shade-plugin.version}</version>
    <configuration>
        <createDependencyReducedPom>false</createDependencyReducedPom>
    </configuration>
    ....
    ....
</plugin>

Подробнее см. подробнее от apache

enter image description here

Ответ 2

Основываясь на ответе bmargulies 'и его комментариях в ответ Xv., я решил настроить POM с уменьшением зависимости, который будет выводиться на target/, который уже игнорируется в моей VCS.

Чтобы сделать это, я просто добавил элемент dependencyReducedPomLocation к элементу configuration плагина, то есть

<configuration>
  <dependencyReducedPomLocation>${project.build.directory}/dependency-reduced-pom.xml</dependencyReducedPomLocation>
  (...)
</configuration>

Ответ 3

См. https://issues.apache.org/jira/browse/MSHADE-121, а также https://issues.apache.org/jira/browse/MSHADE-124.

Есть возможность переместить d-r-p в другое место, но вам могут не понравиться последствия.

Вы ошибаетесь в том, что в банке с затенением она всегда попадает в цель/если вы не переместили ее в другое место.

Ответ 4

Вы можете использовать старую версию плагина. Версия 1.7 плагина maven-shade записывает в /target.

Начиная с версии 1.7.1, pom.xml, зависящий от зависимостей, записывается на основе. См. Вопрос MSHADE-124 по некоторым причинам, почему это было сделано и каковы последствия. Если вы попробуете установить dependencyReducedPomLocation, вы, скорее всего, столкнетесь с проблемами создания сайта - открытая проблема MSHADE-145.

Ответ 5

документация на http://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html неверна, когда она говорит:

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

зависимый-reduced-pom.xml не сохраняется в том же каталоге, что и затененный артефакт (целевой каталог)... он фактически сгенерирован в базовом каталоге, а не цели