maven wagon-maven-plugin 实现远程部署

文章目录

    • 1、maven 依赖
    • 2、配置
      • 2.1、wagon-maven-plugin 的基础配置
      • 2.2、将 `wagon:upload-single wagon:sshexec` 合并到 `package` 命令中(优化、可选步骤)
      • 2.3、密码 在 maven 的 settings.xml (优化配置)
        • 2.3.1、在 settings.xml 中配置密码
        • 2.3.2、pom.xml 的配置
      • 2.4、 停止、启动服务相关的脚本
      • 2.5、与 wagon-maven-plugin 无关,但是项目可能用的配置(可选配置)

开发springboot 项目,每次(测试)部署时,要先打包成 jar 文件,再 SCP 上传的linux 服务器上,用shell 命令停止原有的服务,删除原有的代码,再运行刚刚上传的jar …,这是一系列的重复繁琐操作。而 wagon-maven-plugin 可以简化这些繁琐操作。

1、maven 依赖

 <dependency>
	<groupId>org.codehaus.mojogroupId>
	<artifactId>wagon-maven-pluginartifactId>
	<version>1.0version>
dependency>

2、配置

2.1、wagon-maven-plugin 的基础配置

<build>
	<finalName>assetsfinalName>
	<extensions>
		<extension>
			<groupId>org.apache.maven.wagongroupId>
			<artifactId>wagon-sshartifactId>
			<version>2.10version>
		extension>
	extensions>

	<plugins>
		<plugin>
			<groupId>org.codehaus.mojogroupId>
			<artifactId>wagon-maven-pluginartifactId>
			<version>1.0version>			
			<configuration>				
				
				<fromFile>target/assets.jarfromFile>
				
				<url>url>
				
				
				<commands>
					
					<command>sh /usr/tomcat_assets/stop.shcommand>
					
					<command>sh /usr/tomcat_assets/start.shcommand>
				commands>
				<displayCommandOutputs>truedisplayCommandOutputs>
			configuration>
		plugin>
	plugins>
build>

使用步骤:

  1. 先打包,执行 mvn clean package。我们熟知的maven 打包命令,这里对 springboot 项目进行打包 ;

  2. 再上传打包的文件,执行:wagon:upload-single

  3. 执行shell 命令(脚本),主要是停止、删除原来的服务,启动新的服务,执行:wagon:shexec

如果想上传文件、执行shell 命令 一起执行,将两个命令合并到一块,即: mvn wagon:upload-single wagon:sshexec 。(注意: 命令要有先后顺序)

如果想打包、上传文件、执行shell 命令 三者一起执行,则执行: mvn clean package wagon:upload-single wagon:sshexec

2.2、将 wagon:upload-single wagon:sshexec 合并到 package 命令中(优化、可选步骤)

如果觉得上面的命令复杂,每次都是 打包、上传文件、执行shell 脚本三者一起执行,可以将 上传文件、执行shell 脚本 合并到 打包命令中,即将 wagon:upload-single wagon:sshexec 合并到 package 命令中,当执行打包命令 package 时,就会执行 上传文件、 执行shell 命令。

<build>
	<finalName>assetsfinalName>
	<extensions>
		<extension>
			<groupId>org.apache.maven.wagongroupId>
			<artifactId>wagon-sshartifactId>
			<version>2.10version>
		extension>
	extensions>

	<plugins>
		<plugin>
			<groupId>org.codehaus.mojogroupId>
			<artifactId>wagon-maven-pluginartifactId>
			<version>1.0version>

			<executions>
				<execution>				
					<id>upload-deployid>					
					
					<phase>packagephase>
					<goals>
						<goal>upload-singlegoal>
						<goal>sshexecgoal>
					goals>
					<configuration>						
						
						<fromFile>target/assets.jarfromFile>
						
						<url> url>

						
						<commands>
							
							<command>sh /usr/tomcat_assets/stop.shcommand>
							
							<command>sh /usr/tomcat_assets/start.shcommand>
						commands>
						<displayCommandOutputs>truedisplayCommandOutputs>
					configuration>
				execution>
			executions>
		plugin>
	plugins>
build>     

使用方法: 执行 mvn clean package 即可。

此处的 mvn clean package 相当于执行 mvn clean package wagon:upload-single wagon:sshexec

说明:

此步骤仅仅优化打包、上传、 执行shell 命令的执行,不是必须的配置。

2.3、密码 在 maven 的 settings.xml (优化配置)

文件上传会涉及到密码,密码可以放到pom.xml (上面已演示), 也可以放到 maven 的 settings.xml 。

2.3.1、在 settings.xml 中配置密码

<servers>
	<server>  
		<id>assetsid>  
		<username>rootusername>  
		<password>password>  
	server>
servers>

注意: 的值 要保证唯一。

2.3.2、pom.xml 的配置

标签增加 ,其值与settings.xml 中 标签中的 的值一样。

<configuration>
	<serverId>assetsserverId>
configuration>

如图所示:
maven wagon-maven-plugin 实现远程部署_第1张图片

2.4、 停止、启动服务相关的脚本

stop.sh 停止服务的脚本:

#!/bin/bash

APP_NAME='assets.jar'

tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ];then
    echo 'Stop Process...'
    kill -9 $tpid
fi

sleep 1

tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`

if [ ${tpid} ];then
    echo 'Kill Process!'
    kill -9 $tpid
else
    echo 'Stop Success!'
fi

start.sh 启动脚本:

#!/bin/bash

fileDir=/usr/tomcat_assets
fileName=assets.jar

nohup  /usr/java/jdk1.8.0_201/bin/java -jar  ${fileDir}/${fileName} > ${fileDir}/assets.log   2>&1 &

echo $?

echo 'Start Success! '

2.5、与 wagon-maven-plugin 无关,但是项目可能用的配置(可选配置)

<plugin>
	<groupId>org.apache.maven.pluginsgroupId>
	<artifactId>maven-compiler-pluginartifactId>
	<configuration>
		<source>1.8source>
		<target>1.8target>
		<encoding>UTF-8encoding>
	configuration>
plugin>
<plugin>
	<groupId>org.springframework.bootgroupId>
	<artifactId>spring-boot-maven-pluginartifactId>
	<configuration>
		
		<mainClass>xxx.yyy.zzz.ApplicationmainClass>
	configuration>
	<executions>
		<execution>
			<goals>
				<goal>repackagegoal>
			goals>
		execution>
	executions>
plugin>

你可能感兴趣的:(Maven,&,gradle,maven,wagon,plugin,远程,部署)