Maven Shade + Resteasy Может найти писателя для типа контента
У меня есть проект, который отлично работает с управляемыми зависимостями Maven. Но у меня есть требование, чтобы мои файлы jar были едины.
Для этого я использую плагин maven-shade ( http://maven.apache.org/plugins/maven-shade-plugin/). Все файлы классов экспортируются правильно, но когда я пытаюсь запустить свое приложение, я получаю сообщение об ошибке:
Не удалось найти средство записи для типа данных multipart/form-data: org.jboss.reasteasy.plugins.provider.multipart.MultipartFormDataOutput
Любая помощь будет отличной, спасибо.
Примечание: у меня была похожая проблема с пружиной, основной причиной которой являются файлы конфигурации. Многие jar-файлы содержали конфигурационный файл с таким же именем. Все конфигурационные файлы пытаются переопределить другие. После объединения этого файла с конфигурацией maven-shade проблема была решена.
1 ответ
Возможно, вам не хватает одного из трансформаторов Shade, перечисленных ниже. Я видел ту же ошибку, что и вы, когда запускал 'java -jar' в моем jar-файле, созданном Shade. Убедитесь, что у вас есть запись org.apache.maven.plugins.shade.resource.ServicesResourceTransformer. JAR-файлы, предоставляющие реализации некоторых интерфейсов, часто поставляются с каталогом META-INF/services/, который отображает интерфейсы в их классы реализации для поиска локатором службы. Чтобы объединить несколько реализаций одного и того же интерфейса в одну запись службы, можно использовать ServicesResourceTransformer. Я полагаю, что это было в случае RestEasy под управлением Shade.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>path.to.your.App</mainClass>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>