mvn打包spring工程成jar时报Unable to locate Spring NamespaceHandler for XML schema namespace错误解决办法

来源:互联网 发布:云计算是什么意思 编辑:程序博客网 时间:2024/06/01 08:02
有一个小工程,使用了spring,在使用maven的assembly打包成独立可执行的jar包后,在执行时报如下错误:
Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace
      网上对这个问题也有提及,这是assembly的一个bug.参见:http://jira.codehaus.org/browse/MASSEMBLY-360 原因是spring的多个jar包中都含有spring.handlers和spring.schemas文件,而assembly只会把第一次遇到的文件打入jar包,后面遇到的都会skip掉。

      解决方法就是放弃assembly,使用shade插件来打包.在shade的打包配制中指明spring.handlers和spring.schemas文件会以append方式加入进来,从而确保其他spring的jar中的这两个文件的信息不会被遗漏。下面是一份配置的例子:

  1. <plugin>  
  2.     <groupId>org.apache.maven.plugins</groupId>  
  3.     <artifactId>maven-shade-plugin</artifactId>  
  4.     <version>1.4</version>  
  5.     <executions>  
  6.         <execution>  
  7.             <phase>package</phase>  
  8.             <goals>  
  9.                 <goal>shade</goal>  
  10.             </goals>  
  11.             <configuration>  
  12.                 <transformers>  
  13.                     <transformer  
  14.                         implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">  
  15.                         <mainClass>activiti.server.deploy.Server</mainClass>  
  16.                     </transformer>  
  17.                     <transformer  
  18.                         implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">  
  19.                         <resource>META-INF/spring.handlers</resource>  
  20.                     </transformer>  
  21.                     <transformer  
  22.                         implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">  
  23.                         <resource>META-INF/spring.schemas</resource>  
  24.                     </transformer>  
  25.                 </transformers>  
  26.             </configuration>  
  27.         </execution>  
  28.     </executions>  
  29. </plugin>  

原创粉丝点击