通常情況下,程序開發完成后部署到線上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
|
package、wagon: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> |
配置完成后,運行命令:
1
|
mvn clean package wagon:upload-single wagon:sshexec
|
package、wagon:upload-single、wagon: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> |
完成以上配置后,同樣可通過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> |
配置完成后,即可使用mvn clean package來代替mvn clean package wagon:upload-single wagon:sshexec。