近期一个Maven管理的Java程序碰到了问题, 准备打包上线进行测试 .
项目的架构大概是 : Netty + Spring + Mybatis ;
Maven默认的 mvn package命令, 构建出来的JAR,只包含了工程自身的Class文件,并没有包含依赖的Jar,所以通过配置插件对工程进行打包。
首先配置 并指定一下程序启动的入口。
来,先打个包小试一下
mvn clean package -Dmaven.test.skip=true
打包完成,进入target执行jar,执行一把看看程序会出现什么异常呢
java -jar **.jar
Loading XML bean definition from class path resource[spring/spring-cloud.xml]
错错错,是我的错……跟你的错一样不???
因为assembly在打包时只会把第一次遇到的文件打入jar包,后面遇到的都会skip掉。 也就是说assembly把我的Spring描述文件都忽略掉咯。导致打包不完整,网上找到很多的解决方法,添加一段代码到pom.xml中就ok了。
参考博客: 传送门 点击进入
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<finalName>cloud-server</finalName>
<!--<shadedArtifactAttached>true</shadedArtifactAttached>-->
<shadedClassifierName>jar-with-dependencies</shadedClassifierName>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.kld.cloud.socket.server.ApplicationMain</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>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.tooling</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
还看啥 ….. 没有了