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>
Другие вопросы по тегам