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的搭建

spring boot关于多个模块(module)的配置问题

Spring-Boot构建多模块项目

spring boot 多模块在tomcat上运行

Spring boot 和 Gradle 多模块项目,无法正确加载依赖项