2013-11-22 32 views
1

我有一个项目,与Maven管理的依赖关系工作正常。但我有一个要求我的jar文件作为一个。Maven shade + resteasy可以找到作者的内容类型

为此,我使用Maven荫插件(http://maven.apache.org/plugins/maven-shade-plugin/)。所有类文件正确导出,但是当我尝试运行我的应用程序,我得到为错误:

能找到的内容类型的multipart/form-data的类型作家:org.jboss.reasteasy.plugins.provider.multipart。 MultipartFormDataOutput

任何帮助将是巨大的,谢谢。

注:我也有类似的问题,spring,其主要原因是配置文件。许多jar文件包含一个具有相同名称的配置文件。所有配置文件都试图覆盖其他文件。将该文件与maven-shade配置问题合并后解决。

回答

1

你可能会错过下面列出的一个阴影变形金刚。在我的Shade构建的jar文件上运行'java -jar'时,我看到了和你一样的错误。确保你有一个org.apache.maven.plugins.shade.resource.ServicesResourceTransformer条目。提供某些接口实现的JAR文件通常附带一个META-INF/services /目录,该接口将接口映射到其实现类以供服务定位器查找。要将同一接口的多个实现合并到一个服务条目中,可以使用ServicesResourceTransformer。我相信在Shade下运行RestEasy就是这种情况。

<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>