mvn打包spring工程成jar時報Unable to locate Spring NamespaceHandler for XML schema namespace錯誤解決辦法

有一個小工程,使用了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中的這兩個文件的信息不會被遺漏。下面是一份配置的例子:

<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.ManifestResourceTransformer">  
                        <mainClass>activiti.server.deploy.Server</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>  
                </transformers>  
            </configuration>  
        </execution>  
    </executions>  
</plugin>  
發佈了84 篇原創文章 · 獲贊 135 · 訪問量 41萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章