2012-07-03 5 views
47

плагин Maven оттенок создает файл под названием зависимость восстановленный-pom.xml, а также artifactname-shaded.jar и размещение их в базе каталог.Maven тень плагина добавление зависимостей восстановленной-pom.xml в базовый каталог

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

ответ

50

Вы можете избежать его создания, установив 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> 

См more detail from apache

enter image description here

+11

Если вы отключите его, то созданная вами вещь все равно будет иметь все связанные вложенные зависимости, перечисленные в качестве зависимостей. – bmargulies

7

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

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

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

+1

Не могли бы вы объяснить, что мы должны делать с этим сгенерированным помпом? – Cristiano

+1

Ничего. Добавьте его в файл .gitignore или установите svn: ignore на нем. Maven делает это так, чтобы он мог включать его в затененную банку. – bmargulies

+2

Что вы подразумеваете под 'Вы можете не нравиться последствиям? Каковы негативные последствия? – Gili

1

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

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

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

+4

они пишут (даже в вашем ответе, который вы можете видеть): «плагин создаст временный файл с именем dependency-reduced-pom.xml в проекте basedir» – OhadR

19

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

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

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

Извините это из документации плагина «Куда поместить уменьшенную зависимость Примечание: установка значения для этого параметра с помощью каталога, отличного от $ {basedir}, изменит значение $ {basedir} для всех исполнений, которые появляются после выполнения тени. Это часто не то, что вы хотите. открытая проблема с этим плагином ». –

3

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

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

Смежные вопросы