被IDEA的打包功能打败了:dubbo服务端打包注意事项
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了被IDEA的打包功能打败了:dubbo服务端打包注意事项相关的知识,希望对你有一定的参考价值。
下午在搭建一个基于dubbo和spring的服务端项目。结果打包成jar后各种报错。
起初是因为idea的机制,导致META-INF下自己的Mainfest.mf总是莫名被覆盖,于是报找不到主函数。后来利用artfacts-》jar-》empty方式配置jar包,并把META-INF文件夹和mainfest.mf文件放在rescorces文件夹下解决了。
后来是dubbo已经停止维护,所以xds文件通过url已经拿不到了,查资料发现dubbo.jar里是带有xds文件的,spring怎么读不到呢? 原来又是idea的打包功能的坑,jar包下的META-INF目录下,有两个跟spring相关的文件:spring.handlers、spring.schemas,里面都只包含了一条配置,其他的xds配置都不见了!!
无奈,还是用maven吧,于是用 maven的shade打包插件来搞定
在stackoverflow上找到了答案:http://stackoverflow.com/questions/1937767/spring-3-0-unable-to-locate-spring-namespacehandler-for-xml-schema-namespace
下面的是pom.xml中关于打包部分的配置,可以看见配置了spring.handlers和srping.schemas并且直接指定main入口。
另外需要注意的是dubbo只能认META-INF/srping目录下的xml文件为spring配置文件。所以要自己建立一个META-INF/spring目录结构,把spring配置文件放进去,然后把这个目录结构再给扔到idea标记为resources的文件夹下,通常就是src/main/resources/META-INF/srping/applicationContent.xml 啦,这样一打包spring配置文件才能刚好满足dubbo的奇葩要求。
<build>
<finalName>org.yueue.vita</finalName>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version> 1.7.1</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>com.alibaba.dubbo.container.Main</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
以上是关于被IDEA的打包功能打败了:dubbo服务端打包注意事项的主要内容,如果未能解决你的问题,请参考以下文章