项目场景:
项目是老项目,使用的分层结构。
mesService.jar
mesApi.jar
mesWeb.war
Service使用Dubbo+Zookeeper提供服务。Api是公共包,Service与Web依赖它。Web是对外提供接口。
每次发版部署都需要去替换3个包,启动2个包。决定使用Jenkins自动化构建,发版。结果碰见很多的问题。
问题1:Jenkins构建Service失败
Service打包失败,我想的是将Service与Api包打包为一个jar。使用
下面的maven命令,可以打成包含所有依赖的jar包。
<!-- 打成包含所有依赖包的jar-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<!-- 滤掉这些多余的签名文件-->
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>**/*.SF</exclude>
<exclude>**/*.DSA</exclude>
<exclude>**/*.RSA</exclude>
</excludes>
</filter>
</filters>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.alibaba.dubbo.container.Main</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>
解决方案:
构建时提示,无法找到Api的类。所以这个方案失败。还是构建Service本体。使用Maven插件
<!-- 把依赖的jar包拷到lib目录下 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</