На днях используя Assembly, столкнулся со следующей проблемой. Приложение со Spring собрал в jar. При запуске валилась ошибка:
Exception in thread "main" org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem: Unable to locate Spring NamespaceHandler
for XML schema namespace [http://www.springframework.org/schema/context]
at org.springframework.beans.factory.parsing.FailFastProblemReporter.
error(FailFastProblemReporter.java:68)
at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)
...
Это означает что при копировании в META-INF спринговых файлов spring.schemas и spring.handlers, они перезатираются для каждой spring библиотеки.
Assebly плагин выглядел так:
maven-assembly-plugin 2.2.1 false jar-with-dependencies com.mypackage.MainClass
Немного погуглив, нашел вариант с обьявлением своего assembly дескриптора, или со скачиванем all-in-one Spring библиотеки. Но на stackoverflow посоветовали использовать плагин Shade.
Обьявление Shade:
org.apache.maven.plugins maven-shade-plugin package shade com.mypackage.MainClass META-INF/spring.handlers META-INF/spring.schemas *:* META-INF/*.SF META-INF/*.DSA META-INF/*.RSA
Все. После этого спокойно собираем jar командой package и никаких проблем.
Комментариев нет:
Отправить комментарий