2013-11-22 3 views
1

У меня есть проект, который отлично работает с управляемыми зависимостями maven. Но у меня есть требование предоставить мои файлы jar как один.Maven shade + resteasy Может найти автора для контентного типа

Для этого я использую плагин maven-shade (http://maven.apache.org/plugins/maven-shade-plugin/). Все файлы классов экспортируются правильно, но когда я пытаюсь запустить мое приложение, я получаю сообщение об ошибке:

Может найти автора для типа multipart/form-data типа контента: org.jboss.reasteasy.plugins.provider.multipart. MultipartFormDataOutput

Любая помощь будет большой, спасибо.

Примечание: У меня была аналогичная проблема с пружиной, основной причиной которой являются файлы конфигурации. Многие файлы jar содержат файл configuraiton с таким же именем. Все файлы конфигурации пытаются переопределить остальные. После слияния этого файла с проблемой конфигурации maven-shade была решена проблема.

ответ

1

Возможно, вам не хватает одного из трансформаторов Shade, перечисленных ниже. Я видел ту же ошибку, что и ваша, при запуске «java -jar» в моем файле jar, созданной Shade. Убедитесь, что у вас есть запись org.apache.maven.plugins.shade.resource.ServicesResourceTransformer. Файлы JAR, обеспечивающие реализацию некоторых интерфейсов, часто поставляются с каталогом META-INF/services /, который сопоставляет интерфейсы с их классами реализации для поиска локатором службы. Чтобы объединить несколько реализаций одного и того же интерфейса в одну служебную запись, можно использовать ServiceResourceTransformer. Я считаю, что это было так, когда 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> 
Смежные вопросы