Mavenプラグインwagon-maven-pluginを介してサーバーへのSpringBootプロジェクトの迅速なデプロイを実現します

関連する参照コンテンツのリンクアドレス:

1.wagon-maven-pluginの概要

Mavenプラグインwagon-maven-pluginを使用して、デプロイメントを自動的に完了します。

springbootプロジェクトを開発し、デプロイメントプロジェクトを(テスト)するときは、最初にそれをjarファイルにパッケージ化し、次にshellコマンドを使用してSCPによってアップロードされたLinuxサーバー上の元のサービスを停止し、元のコードを削除してから実行する必要があります。アップロードしたばかりのjarファイル...、これは一連の反復的で退屈な操作です。またwagon-maven-plugin、複雑な操作を簡素化できます。

2、コード例

2.1Linuxサーバーのユーザー名とパスワードを構成する

<properties>
        <!--服务器项目运行的地址-->
        <service-path>/project/</service-path>
        <pack-name>${project.artifactId}-${project.version}.jar</pack-name>
        <!--ssh登录服务器的ip和端口 端口一般默认22-->
        <remote-addr>ip:port</remote-addr>
        <remote-username>服务器用户名</remote-username>
        <remote-passwd>服务器密码</remote-passwd>
</properties>

2.2Mavenはjarに依存します

<!-- https://mvnrepository.com/artifact/org.codehaus.mojo/wagon-maven-plugin -->
<dependency>
   <groupId>org.codehaus.mojo</groupId>
   <artifactId>wagon-maven-plugin</artifactId>
   <version>2.0.0</version>
</dependency>

2.3pom.xmlのビルドを変更する

<build>
<extensions>
    <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-ssh</artifactId>
        <version>2.8</version>
    </extension>
</extensions>
<plugins>
    <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>
                <!-- 杀死原来的jar进程 -->
                <command>pkill -f ${pack-name}</command>
                <!-- 重新启动jar进程,程序的输出结果写到log文件中 -->
                <command><![CDATA[nohup java -jar ${service-path}/${pack-name} --spring.profiles.active=dev > ${service-path}/bd.log 2>&1 & ]]></command>
                <command><![CDATA[netstat -nptl]]></command>
                <command><![CDATA[ps -ef | grep java | grep -v grep]]></command>
            </commands>
            <!-- 显示运行命令的输出结果 -->
            <displayCommandOutputs>true</displayCommandOutputs>
        </configuration>

    </plugin>
</plugins>
</build>

2.4コマンドの実行

pom.xmlファイルと同じディレクトリのターミナルで次のmvnコマンドを実行します

mvn clean package wagon:upload-single wagon:sshexec

3、2、構成

3.1wagon-maven-pluginの基本構成

<build>
	<finalName>assets</finalName>
	<extensions>
		<extension>
			<groupId>org.apache.maven.wagon</groupId>
			<artifactId>wagon-ssh</artifactId>
			<version>2.10</version>
		</extension>
	</extensions>

	<plugins>
		<plugin>
			<groupId>org.codehaus.mojo</groupId>
			<artifactId>wagon-maven-plugin</artifactId>
			<version>1.0</version>			
			<configuration>				
				<!-- 需要部署的文件 -->
				<fromFile>target/assets.jar</fromFile>
				<!-- 部署目录  用户:密码@ip+部署地址:端口 -->
				<url><![CDATA[ scp://root:密码@192.168.1.100:28/usr/tomcat_assets/ ]]></url>
				
				<!--shell 执行脚本 -->
				<commands>
					<!-- 停止服务-->
					<command>sh /usr/tomcat_assets/stop.sh</command>
					<!-- 启动服务 -->
					<command>sh /usr/tomcat_assets/start.sh</command>
				</commands>
				<displayCommandOutputs>true</displayCommandOutputs>
			</configuration>
		</plugin>
	</plugins>
</build>

使用手順:

  1. 最初にパッケージ化して実行しmvn clean packageます。ここでは、springbootプロジェクトをパッケージ化するためのMavenパッケージ化コマンドに精通しています。
  2. 次に、パッケージ化されたファイルをアップロードして実行しwagon:upload-singleます:;
  3. シェルコマンド(スクリプト)を実行します。主に、元のサービスを停止、削除し、新しいサービスを開始し、以下を実行しますwagon:shexec

アップロードファイルを使用して実行する場合は、シェルコマンドを実行します。コマンドは、2つを1つにマージしますmvn wagon:upload-single wagon:sshexec(注:順序は順番になっている必要があります)

パッケージ化、ファイルのアップロード、シェルコマンドの3つの実行を一緒に実行する場合は、以下を実行しますmvn clean package wagon:upload-single wagon:sshexec

3.2コマンドにwagon:upload-single wagon:sshexec組み込まれpackageています(最適化、オプションのステップ)

上記のコマンドが複雑だと思う場合は、パッケージ化するたびに、ファイルをアップロードし、シェルスクリプトを実行して、3つを一緒に実行します。ファイルをアップロードし、パッケージ化に組み込まれたシェルスクリプトコマンドを実行すると、すぐwagon:upload-single wagon:sshexecpackageコマンドマージされます。コマンドパッケージpackage、ファイルのアップロードとシェルコマンドの実行が実行されます。

<build>
	<finalName>assets</finalName>
	<extensions>
		<extension>
			<groupId>org.apache.maven.wagon</groupId>
			<artifactId>wagon-ssh</artifactId>
			<version>2.10</version>
		</extension>
	</extensions>

	<plugins>
		<plugin>
			<groupId>org.codehaus.mojo</groupId>
			<artifactId>wagon-maven-plugin</artifactId>
			<version>1.0</version>

			<executions>
				<execution>				
					<id>upload-deploy</id>					
					<!-- 运行package打包的同时运行upload-single和sshexec -->
					<phase>package</phase>
					<goals>
						<goal>upload-single</goal>
						<goal>sshexec</goal>
					</goals>
					<configuration>						
						<!-- 需要部署的文件 -->
						<fromFile>target/assets.jar</fromFile>
						<!-- 部署目录  用户:密码@ip+部署地址:端口 -->
						<url><![CDATA[ scp://root:密码@192.168.1.100:28/usr/tomcat_assets/ ]]> </url>

						<!--shell 执行脚本 -->
						<commands>
							<!-- 停止服务-->
							<command>sh /usr/tomcat_assets/stop.sh</command>
							<!-- 启动服务 -->
							<command>sh /usr/tomcat_assets/start.sh</command>
						</commands>
						<displayCommandOutputs>true</displayCommandOutputs>
					</configuration>
				</execution>
			</executions>
		</plugin>
	</plugins>
</build>     

使用法:実行mvn clean packageすることができます。

ここだmvn clean package実行の同等はmvn clean package wagon:upload-single wagon:sshexec

説明:

この手順は、シェルコマンドのパッケージ化、アップロード、および実行の実行を最適化するだけであり、必要な構成ではありません。

3.3パスワードはmavenのsettings.xmlにあります(最適化された構成)

ファイルのアップロードにはパスワードが含まれます。パスワードは、pom.xml(上記で説明)またはmavenのsettings.xmlに配置できます。

3.3.1settings.xmlでパスワードを構成します

<servers>
	<server>  
		<id>assets</id>  
		<username>root</username>  
		<password><![CDATA[密码]]></password>  
	</server>
</servers>

注: <id>値は一意である必要があります。

3.3.2Pom.xml構成

<configuration><serverId>その値を増やすための<server>ラベル<id>と同じ値のsettings.xmlラベル

<configuration>
	<serverId>assets</serverId>
</configuration>

写真が示すように:
ここに画像の説明を挿入

3.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! '

3.5 wagon-maven-pluginとは関係ありませんが、プロジェクトが使用する可能性のある構成(オプションの構成)

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-compiler-plugin</artifactId>
	<configuration>
		<source>1.8</source>
		<target>1.8</target>
		<encoding>UTF-8</encoding>
	</configuration>
</plugin>
<plugin>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-maven-plugin</artifactId>
	<configuration>
		<!-- 修改相应的SpringBootApplication.java -->
		<mainClass>xxx.yyy.zzz.Application</mainClass>
	</configuration>
	<executions>
		<execution>
			<goals>
				<goal>repackage</goal>
			</goals>
		</execution>
	</executions>
</plugin>

おすすめ

転載: blog.csdn.net/An1090239782/article/details/112243859