2016-06-21 3 views
2

При запуске сборки Maven в eclipse с использованием инструмента m2eclipse для проекта, настроенного для Maven Shade Plugin, сборка не выполняется со следующим сообщением об ошибке:maven-shade-plugin reports: Ошибка создания заштрихованного jar: ... target/classes (является каталогом)

Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:2.4.3:shade (default) on project xxx: Error creating shaded jar: /.../project/target/classes (Is a directory) -> [Help 1]

Я пробовал разные версии Shade плагина и попытался с различными версиями Java (6,7,8). Все они приводят к одной и той же ошибке.

Обход:

Решение для this question обеспечивает обходной путь: Ошибка возникает только тогда, когда параметр Resolve Workspace Artifacts выбран. Если этот параметр не выбран, сборка выполняется нормально.

(Однако это не решает проблему, так как часто очень полезно создавать проекты с разрешенным разрешением рабочей области).

+0

Если бы я мог ... видеть [Автоматическая установка проектов Maven в Eclipse on Build] (http://stackoverflow.com/questions/35191737/automatic-install-of-maven-projects-in-eclipse-upon -build) – mxro

+0

В чем проблема, чтобы загрузить Maven и выполнить ее из командной строки? – khmarbaise

+0

Моя проблема с этим, как указано в вопросе, связанном с предыдущим комментарием.По сути, поскольку запуск 'mvn clean' заставляет eclipse непригодным для меня делать сборки, я прибегал к отключению моего скрипта, устанавливающего артефакты, и вместо этого полагался на разрешение внутри eclipse во время разработки. – mxro

ответ

2

часто бывает очень полезно для построения проектов с разрешением позволило рабочей

Раньше я думал то же самое ... Очевидно, что это было очень полезно, чтобы иметь возможность построить проект прямо из другого проект, расположенный в текущем рабочем пространстве. Тем не менее, я быстро вступил в кошмар с Eclipse, m2eclipse и Maven.

С одной стороны, Maven должен найти зависимости проекта в репозитории (локальном, центральном ...). С другой стороны, m2eclipse «приманивает» Maven, полагая, что проект, расположенный в рабочем пространстве Eclipse, является зависимостью в хорошо известном месте Maven (т. Е. Репозитории).

Эта магия m2eclipse отлично работает в некоторых случаях, но в других ... она просто не работает (пример плагина maven shade). Вы также заметили, что опция Resolve Workspace Artifacts не активирована по умолчанию?

Чтобы избежать выхода из игры, я нашел полезным всегда извлекать зависимости проектов из репозитория. Если мой проект A зависит от другого проекта B в моей рабочей области, я просто устанавливаю B в локальном репозитории (щелкните правой кнопкой мыши по проекту B, Run as>Maven install. Вот и все).

я вижу три преимущества этой обходной путь:

  • Нет больше кошмаров
  • Нет m2eclipse волшебства
  • Полный стандарт и традиционный способ Maven честь

Вы можете увидеть этот подход как маленький людоед. Если вы все еще хотите пойти с отличным вариантом Resolve Workspace Artifacts, отправьте вопрос в команду m2eclipse. Не забудьте подготовить образец проекта, воспроизводящий проблему.

+0

Я согласен с этим советом. У этого есть много преимуществ, чтобы сделать вещи «чистым» способом и работать с современным локальным или (даже лучшим) удаленным репозиторием. К сожалению, я столкнулся с другой проблемой, которая мешает мне спуститься по этому маршруту ([Вопрос № 35191737] (http://stackoverflow.com/questions/35191737/automatic-install-of-maven-projects-in-eclipse-upon -Build)). На данный момент создание в затмении с помощью «Resolve Workspace Artifacts» - лучшее, что я мог бы придумать ... – mxro

+0

Я посмотрю, может быть, у кого-нибудь есть решение и в противном случае подать вопрос! – mxro