spring boot多模块项目的自动化部署
Posted 左沩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot多模块项目的自动化部署相关的知识,希望对你有一定的参考价值。
最近一直在看一些多模块项目的构建,其实多模块基本面可以这么理解下,就是将将其它的项目作为依赖导入到一个项目下。但是为了一次性构建所有模块,可以通过一个父模块实现,那么父模块中的核心配置如下。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.10.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!-- 一次性构建多个模块 -->
<modules>
<module>platform-common</module> <!-- 公共模块 -->
<module>platform-system</module>
</modules>
作为spring boot项目,我们知道测试时,有一个启动类,那么我们通过多模块打成的jar包,通过java -Xmx512m Xms512m xxx.jar 启动时,需要一个启动入口,那么这个入口,通过如下配置
<plugin>
<!-- The plugin rewrites your manifest -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.3.0.RELEASE</version>
<configuration><!-- 指定该Main Class为全局的唯一入口 -->
<mainClass>com.platform.SystemApplication</mainClass>
<layout>ZIP</layout>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中-->
</goals>
<!--可以生成不含依赖包的不可执行Jar包-->
<!-- configuration>
<classifier>exec</classifier>
</configuration> -->
</execution>
</executions>
</plugin>
将应用打包成可执行性的jar包还需要如下插件
<!--将应用打包为可执行的jar包或war包 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- 跳过单元测试 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
至此我们的项目就可以实现打包成jar包部署了。
但是我们要实现自动化部署到服务器,可以通过wagon-maven-plugin插件,配置有两个地方,首先配置
<!-- 使用wagon-maven-plugin 自动部署项目的前提 -->
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>2.8</version>
</extension>
</extensions>
另外部署插件
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0</version>
<configuration>
<fromFile>target/$pack-name</fromFile>
<url><![CDATA[scp://$remote-username:$remote-passwd@$remote-addr$service-path]]></url>
<commands>
<command>pkill -f $pack-name</command>
<command>rm -f $service-path/renren.log</command>
<command><![CDATA[nohup java -jar $service-path/$pack-name > $service-path/renren.log 2>&1 & ]]></command>
<command><![CDATA[netstat -nptl]]></command>
<command><![CDATA[ps -ef | grep java | grep -v grep]]></command>
</commands>
<!-- 运行命令 mvn clean package wagon:upload-single wagon:sshexec -->
<displayCommandOutputs>true</displayCommandOutputs>
</configuration>
</plugin>
我们发现上面有很多参数变量,那么这些参数变量是在哪配置的呢?
在properties中配置,如下
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<!--wagon plugin 配置-->
<service-path>/www/</service-path>
<pack-name>$project.artifactId.jar</pack-name>
<remote-addr>127.0.0.1</remote-addr>
<remote-username>root</remote-username>
<remote-passwd>xxxxxx</remote-passwd>
</properties>
至此所有配置都讲解结束
参考文档:
http://blog.csdn.net/mn960mn/article/details/49560003
以上是关于spring boot多模块项目的自动化部署的主要内容,如果未能解决你的问题,请参考以下文章
如何在 OpenShift 上部署多模块 maven spring boot 应用程序
spring-boot 2.0 多模块化项目和EurekaServer的搭建