1. 程式人生 > >MAVEN外掛部署JAVA專案到遠端容器

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:
[email protected]
/home/xxg/Desktop</url> </configuration> </plugin> </plugins> </build>

<fromFile>target/test.jar</fromFile>是要上傳到伺服器的檔案,一般來說是jar或者war包,<url>scp://user:[email protected]/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:[email protected]/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:[email protected]/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:[email protected]/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

相關推薦

MAVEN外掛部署JAVA專案遠端容器

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

使用myeclipse tomcat外掛部署web專案時報錯 an internal error occurred during add deployment . java.lang.nullpointerexception

問題描述: 使用myeclipse10的tomcat外掛部署web專案時,首次部署。實際部署到了tomcat/webapps目錄下且tomcat啟動成功,但是eclipse報錯"An internal error occurred during: "Add Deployment"  : 

mavenmaven-thrift-plugin 外掛使用 + Java專案中thrift使用的正確姿勢

1.首先介紹下maven-thrift-plugin外掛在java中使用該外掛可以讓我們在maven中使用 編譯.thrift檔案,在大型專案中尤其有用。下面看下如何使用:假設這裡要提供一個HelloService的thrift服務:namespace java com.li

Eclipse使用Maven外掛建立Web專案時出錯 Could not resolve archetype org a

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

vmware ubuntu環境下部署java專案時安裝jdk 與Tomcat的問題總結

win7下vmware虛擬網絡卡顯示未識別網路的解決 https://yq.aliyun.com/articles/5138 VMware Network Adapter VMnet1和VMnet8 被防火牆認定為[未識別的網路-公用網路],阻隔,無法使用埠對映,虛擬機器的80埠無

本地虛擬機器部署java專案(tomcat8 ,jdk8,VMWare)

我的專案需要啟動三個服務: redis,mysql,tomcat(在vmware上) 使用crt遠端連線到tomcat 將要部署的專案打成war包上傳到伺服器(直接上傳到tomcat  webapps目錄下)    

Maven部署Web專案

使用maven的自動部署功能可以很方便的將maven工程自動部署到遠端tomcat伺服器,節省大量時間。 本文章適用於tomcat的 9.x版本。 1.配置tomcat的manager 編輯tomcat

Jenkins | 進階篇 | 基於Maven構建一個Java專案

                       --昨夜西風凋碧樹,獨上高樓,望盡天涯路 環境準備 硬體準備: 256 MB RAM, 推薦 512MB 10 GB of 硬碟 (用於給Jenkins以及Docker) 執行Jenkins 下面通過doc

第四十四課預習任務 Jenkins部署java專案

1. Jenkins部署java專案 1.1準備工作: java的專案是需要編譯和打包的  編譯和打包用maven完成,所以需安裝maven  本次實驗,我們採用git私有倉庫的形式,涉及到配置金鑰  準備工作:  自己申

使用Maven外掛構建SpringBoot專案,生成Docker映象push到DockerHub上

一個用於構建和推送Docker映象的Maven外掛。 使用Maven外掛構建Docker映象,將Docker映象push到DockerHub上,或者私有倉庫,上一篇文章是手寫Dockerfile,這篇文章藉助開源外掛docker-maven-plugin 進行

Maven外掛構建Springboot專案,生成Docker映象

一.Window平臺 .使用標準Spring Boot應用程式的Maven配置,建立springboot專案並測試。 新增Dockerfile:在src/main/resources下新增Dockerfile FROM java MAINTAINER "xiaoming

使用Maven外掛快捷打包釋出遠端Docker映象 dockerfile-maven-plugin

採用外掛一步打包釋出本地的Maven專案為遠端主機的Docker映象,之前的docker-maven-plugin已經被廢棄, dockerfile-maven-plugin是其替代,我們將採用最新的dockerfile-maven-plugin外掛

Docker Maven外掛(對專案進行打包並使用docker執行產生映象)

1. 使用dokerfile 進行構建    建立dockerfile2. maven 外掛12345678910111213141516<plugin><groupId>com.spotify</groupId><artifactI

在Linux上部署java專案的開發環境

如需要用虛擬機器則下載centos的地址:(http://mirrors.aliyun.com) 第一步:安裝資料來源(https://opsx.alibaba.com/mirror) 1、備份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.re

CentOS7配置教程(六)安裝Maven和建立Java專案、執行專案

一、安裝 前提:需要安裝好jdk 1、下載安裝檔案 在任何目錄下執行如下命令: 2、解壓安裝 tar -zxvf apache-maven-3.3.9-bin.tar.gz  mv apache-maven-3.3.9 maven-3.3.9 3、配置環境變

使用tomcat7-maven-plugin部署Web專案

一、環境準備 我使用的環境是:Window 10、Tomcat 8.0.36、maven3、tomcat7-maven-plugin 2.2版本。 二、設定環境變數 安裝Tomcat8.0.36和

IDEA下maven編譯打包Java專案成jar包但是resource下配置檔案打包不成功

今天在IDEA下打包一個Java專案,準備打包成jar包直接執行,打包之後執行時候一直提示resource下資原始檔找不到,但我又確實配置了的,而且在IDEA上可以執行,但是打包成jar包之後就執行不了了。 後來百度,發現對於resource下檔案(prope

Maven 快速生成Java專案結構

  Maven使用 archetype 來建立專案。要建立一個簡單的 Java 應用程式,我們使用 maven-archetype-quickstart 外掛。在下面的例子中,我們將建立一個基於Maven 的 Java 應用程式專案在 G:\workspace 資料夾。

Idea 使用 Gradle 外掛建立 Java 專案

1 簡介 Android Studio中使用gradle外掛來構建工程,引入第三方庫都非常方便,於是就想,普通Java工程可不可以使用Gradle來引用第三方庫呢,經過摸索,找到了在idea中使用Gradle構建Java Project的方法 2 Ide

基於IDEA Java 專案遠端DEBUG除錯

     遠端除錯是指服務端程式執行在一臺遠端伺服器上,我們可以在本地服務端的程式碼(前提是本地的程式碼必須和遠端伺服器執行的程式碼一致)中設定斷點,每當有請求到遠端伺服器時時能夠在本地知道遠端服務端的此時的內部狀態。一、 場景    1. 第三方介面開發的非同步回撥介面;如