1.背景:spring 项目,idea本地run Application没有问题,maven打包传输到服务器上之后无法解析依赖的第三方的xml配置文件。
2.排查
- 尝试在浏览器打开第三方的xsd schema,无法打开。
- 解压缩机器上的jar包后查看META-INF下spring.schemas,只有一组对应xml和jar中schema的对应关系
总结:识别不了xml文件,是因为第三方的多个xsd文件通过链接无法访问下载,只能用本地jar里面的,maven打包的时候会覆盖这在META-INF下spring.schemas的对应关系,导致找不到本地的也无法下载,无法识别。
3.解决
- 打包方式用的maven-shade-plugin,pom 文件中加入下面代码,可以将多个schema的对应关系加到spring.schemas中
<executions>
<execution>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>