使用wagon-maven-plugin部署Java項目到遠程服務器


前言

  在項目開發過程中,經常需要部署代碼到開發環境,每天可能需要很多次。每次部署代碼的步驟

    1、將本地代碼打包

    2、將打包好的文件上傳到服務器

    3、重啟服務,完成部署。

  如果使用maven管理項目,有一個maven插件可以自動完成以上步驟。插件名為:wagon-maven-plugin。

  下面記錄使用這個插件自動部署代碼到服務器。

配置Linux服務器用戶名和密碼

  為了讓wagon-maven-plugin插件能ssh連上Linux服務器,首先需要在Maven的配置文件setting.xml中配置好server的用戶名和密碼。

 

<servers>
    <server>
        <id>linux-server-dev</id>
        <username>root</username>
        <password>123456</password>
    </server>
</servers>

 

文件上傳到服務器

  maven項目可以使用mvn package指令打包,打包完成后位於target目錄下。如果想要部署到服務器上,首先需要將打完的包上傳到服務器。那么如何通過maven自動將包上傳到服務器呢?這里需要在maven項目的核心文件pom.xml中配置wagon-maven-plugin插件。

<build>
    <extensions>
        <extension>
            <!-- 配置wagon-maven-plugin連接服務器使用的技術是ssh  -->
       <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>
                <serverId>linux-server-dev</serverId>
                <!-- serverId即上一步中在settings.xml中配置的service的id -->
                <fromFile>target/project_name.jar</fromFile>
                <!-- 要上傳到服務器的文件,一般來說是jar或者war包 -->
                <url>scp://192.168.1.1/home/project_name/</url>
                <!-- 配置服務器的地址以及文件上傳的目錄。 -->
            </configuration>
        </plugin>
    </plugins>
</build>

  配置完成以后,如果需要部署項目,直接使用指令: mvn clean package wagon:upload-single

重啟服務

  代碼打包完成后自動上傳到服務器,那最后的步便是重啟服務。是否可以通過maven配置直接重啟服務呢?答案是肯定的。下面就是如何配置是maven可以重啟服務。

  做法是,將重啟命令寫到一個腳本中,把腳本放在當前項目下,因為每一個項目的啟動腳本都不一樣,這樣便於管理。

 

#!/bin/bash

ps -ef | grep a8admin | grep qa |awk '{print $2}' |xargs kill -9
sleep 1
nohup java -jar -Dspring.profiles.active=qa -Dserver.port=8083 a8admin-api-1.0-RELEASE.jar >> 8083.log 2>&1 &
tail -f 8083.log

 

以上是便是一個重啟命令腳本。

  有了命令腳本,現在需要在maven的pom.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>
                <serverId>linux-server-dev</serverId>
                <fromFile>target/project_name.jar</fromFile>
                <url>scp://192.168.20.128/home/project_name/</url>
                <commands>
                    <command>sh ./restart.sh</command>
                </commands>
                <!-- 顯示運行命令的輸出結果 -->
                <displayCommandOutputs>true</displayCommandOutputs>
            </configuration>
        </plugin>
    </plugins>
</build>

  配置完成以后,這樣在打包時的指令為:mvn clean package wagon:upload-single wagon:sshexec。

配置execution

  如果完成上面的配置,而且配置信息正確,那么便可以通過命令一鍵部署項目到服務器,並且可以自動重啟。

  如果感覺上面的命令太長,那么可以配置executio,配置成功以后在運行打包同樣可以運行upload-single和sshexec命令。

 

<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>
            <executions>
                <execution>
                    <id>upload-deploy</id>
                    <!-- 運行package打包的同時運行upload-single和sshexec -->
                    <phase>package</phase>
                    <goals>
                        <goal>upload-single</goal>
                        <goal>sshexec</goal>
                    </goals>
                    <configuration>
                        <serverId>linux-server-dev</serverId>
                        <fromFile>target/project_name.war</fromFile>
                        <url>scp://192.168.20.128/home/tomcat/apache-tomcat-7.0.55/webapps</url>
                        <commands>
                            <command>sh /home/tomcat/apache-tomcat-7.0.55/bin/shutdown.sh</command>
                            <command>rm -rf /home/tomcat/apache-tomcat-7.0.55/webapps/javawebdeploy</command>
                            <command>sh /home/tomcat/apache-tomcat-7.0.55/bin/startup.sh</command>
                        </commands>
                        <displayCommandOutputs>true</displayCommandOutputs>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

 

  配置完成以后,指令恢復到: mvn clean package

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM