maven插件部署java項目到遠程容器


通常情況下,程序開發完成后部署到線上Linux服務器,可能需要經歷打包、將包文件傳到服務器、SSH連上服務器、敲命令啟動程序等一系列繁瑣的步驟。實際上這些步驟都可以通過Maven的一個插件wagon-maven-plugin來自動完成。

文件上傳到服務器

Maven項目可使用mvn package指令打包,打包完成后包位於target目錄下,要想在遠程服務器上部署,首先要將包上傳到服務器。

在項目的pom.xml中配置wagon-maven-plugin插件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<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/test.jar</fromFile>
<url>scp://user:password@192.168.20.128/home/xxg/Desktop</url>
</configuration>
</plugin>
</plugins>
</build>

 

<fromFile>target/test.jar</fromFile>是要上傳到服務器的文件,一般來說是jar或者war包,<url>scp://user:password@192.168.20.128/home/xxg/Desktop</url>配置服務器的用戶、密碼、地址以及文件上傳的目錄。

配置完成后,運行命令:

1
mvn clean package wagon:upload-single

 

packagewagon:upload-single分別對項目進行打包和上傳操作。命令運行結束后,文件就會成功上傳到Linux服務器。

在服務器上執行Linux命令

部署項目不僅要把包傳上服務器,而且還需要執行一些指令來啟動程序。在程序啟動之前,可能還需要將原來的程序關閉。

運行jar文件

啟動jar包通常會使用java -jar test.jar命令,可以將命令配置在pom.xml中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<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/test.jar</fromFile>
<url>scp://user:password@192.168.20.128/home/xxg/Desktop</url>
<commands>
<!-- 殺死原來的進程 -->
<command>pkill -f test.jar</command>
<!-- 重新啟動test.jar,程序的輸出結果寫到nohup.out文件中 -->
<command>nohup java -jar /home/xxg/Desktop/test.jar > /home/xxg/Desktop/nohup.out 2>&amp;1 &amp;</command>
</commands>
<!-- 顯示運行命令的輸出結果 -->
<displayCommandOutputs>true</displayCommandOutputs>
</configuration>
</plugin>
</plugins>
</build>

 

配置完成后,運行命令:

1
mvn clean package wagon:upload-single wagon:sshexec

 

packagewagon:upload-singlewagon:sshexec分別對項目進行打包、上傳、運行command命令的操作。命令運行結束后,在服務器上查看進程ps -ef|grep test.jar,或者查看nohup.out文件,就可以看到Java程序在服務器上已經啟動。

上傳war包並啟動Tomcat

如果是Web應用,可使用服務器上的Tomcat來部署。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<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/javawebdeploy.war</fromFile>
<!-- 上傳到Tomcat的webapps目錄下 -->
<url>scp://user:password@192.168.20.128/coder/tomcat/apache-tomcat-7.0.55/webapps</url>
<commands>
<!-- 重啟Tomcat -->
<command>sh /coder/tomcat/apache-tomcat-7.0.55/bin/shutdown.sh</command>
<command>rm -rf /coder/tomcat/apache-tomcat-7.0.55/webapps/javawebdeploy</command>
<command>sh /coder/tomcat/apache-tomcat-7.0.55/bin/startup.sh</command>
</commands>
<displayCommandOutputs>true</displayCommandOutputs>
</configuration>
</plugin>
</plugins>
</build>

 

完成以上配置后,同樣可通過mvn clean package wagon:upload-single wagon:sshexec命令自動部署。

配置execution

如果你覺得mvn clean package wagon:upload-single wagon:sshexec命令太長了不好記,那么可以配置execution,在運行package打包的同時運行upload-single和sshexec。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<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>
<fromFile>target/javawebdeploy.war</fromFile>
<url>scp://user:password@192.168.20.128/coder/tomcat/apache-tomcat-7.0.55/webapps</url>
<commands>
<command>sh /coder/tomcat/apache-tomcat-7.0.55/bin/shutdown.sh</command>
<command>rm -rf /coder/tomcat/apache-tomcat-7.0.55/webapps/javawebdeploy</command>
<command>sh /coder/tomcat/apache-tomcat-7.0.55/bin/startup.sh</command>
</commands>
<displayCommandOutputs>true</displayCommandOutputs>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

 

配置完成后,即可使用mvn clean package來代替mvn clean package wagon:upload-single wagon:sshexec


免責聲明!

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



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