月份: 2014-10

Maven+shade 打包运行异常,Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/context] Offending resource: class path resource [bus/spring/applicationContext.xml]

使用Maven  + shade 打包成jar 时,启动应用报如下错误:
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/context] Offending resource: class path resource [bus/spring/applicationContext.xml]
stackoverflow 查到如下信息:
http://stackoverflow.com/questions/1937767/spring-3-0-unable-to-locate-spring-namespacehandler-for-xml-schema-namespace解决方案:在maven-shade-plugin 的 configuration  的 transformers 中加入spring 打包的 META-INF信息即可

  <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>1.4</version>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>shade</goal>
                </goals>
                <configuration>
                  <transformers>
<!-- 加入以下段落 -->
                      <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.ManifestResourceTransformer">
                      <mainClass>start.StartGameServer</mainClass>
                    </transformer>
                  </transformers>
                </configuration>
              </execution>
            </executions>
          </plugin>