日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

170329、用 Maven 部署 war 包到远程 Tomcat 服务器

發布時間:2025/3/15 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 170329、用 Maven 部署 war 包到远程 Tomcat 服务器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

過去我們發布一個Java Web程序通常的做法就是把它打成一個war包,然后用SSH這樣的工具把它上傳到服務器,并放到相應的目錄里,讓Tomcat自動去解包,完成部署。

?

很顯然,這樣做不夠方便,且我們在用SSH把文件拽上去的時候很可能會搞錯。(當然了大廠就不會有這樣的問題,因為人家有運維團隊專門來干這個事情,哈哈)

?

現在我要的是:一行命令部署到本地服務器,在本地測試一番,沒有問題的話就一行命令部署到正式服務器,另外正式服務器的密碼只有我自己知道,只有我能執行這個部署(其它開發組員不知道正式服務器密碼)。

?

OK,我們先要在Maven(POM.XML)中引入這個插件:

?

<build>

? ? ? ? <plugins>

? ? ? ? ? ? <plugin>

? ? ? ? ? ? ? ? <groupId>org.apache.tomcat.maven</groupId>

? ? ? ? ? ? ? ? <artifactId>tomcat7-maven-plugin</artifactId>

? ? ? ? ? ? ? ? <version>2.2</version>

? ? ? ? ? ? </plugin>

? ? ? ? </plugins>

? ? </build>

?

這個叫“tomcat7-maven-plugin”的插件是利用Tomcat的“manager”模塊來實現war包部署的,所以必須確保Tomcat安裝了Manager模塊,(看看webapp下有沒有Manager目錄)它雖然名字帶“tomcat7”,但Tomcat8也適用,我用的就是Tomcat8。接下來我們對本地的Tomcat的manager模塊進行一些配置,打開本地Tomcat的tomcat-users.xml文件,增加這樣的配置:

?

<user username="deployer" password="654321" roles="manager-script"/>

?

這個叫“deployer”的用戶,角色設定為“manager-script”,表明他可以使用Tomcat的manager模塊的后臺腳本管理,BTW,如果角色為“manager-gui”則表示此用戶可使用manager模塊的前端網頁管理。然后對正式服務器也做一個類似的配置。

?

接下來完善一下tomcat7-maven-plugin的配置:

?

<properties>

? ? ? ? <warPackageName>MyWebAppDemo</warPackageName>

? ? ? ? <tomcat.deploy.server>localTestServer</tomcat.deploy.server>

? ? ? ? <tomcat.deploy.serverUrl>http://localhost/manager/text</tomcat.deploy.serverUrl>

? ? </properties>

?

? ? <profiles>

? ? ? ? <profile>

? ? ? ? ? ? <id>deploy2production</id>

? ? ? ? ? ? <properties>

? ? ? ? ? ? ? ? <tomcat.deploy.server>productionServer</tomcat.deploy.server>

? ? ? ? ? ? ? ? <tomcat.deploy.serverUrl>http://120.26.93.30:8080/manager/text</tomcat.deploy.serverUrl>

? ? ? ? ? ? </properties>

? ? ? ? </profile>

? ? </profiles>

?

? ? <build>

? ? ? ? <finalName>${warPackageName}</finalName>

? ? ? ? <plugins>

? ? ? ? ? ? <plugin>

? ? ? ? ? ? ? ? <groupId>org.apache.tomcat.maven</groupId>

? ? ? ? ? ? ? ? <artifactId>tomcat7-maven-plugin</artifactId>

? ? ? ? ? ? ? ? <version>2.2</version>

? ? ? ? ? ? ? ? <configuration>

? ? ? ? ? ? ? ? ? ? <server>${tomcat.deploy.server}</server>

? ? ? ? ? ? ? ? ? ? <url>${tomcat.deploy.serverUrl}</url>

? ? ? ? ? ? ? ? ? ? <path>/${warPackageName}</path>

? ? ? ? ? ? ? ? </configuration>

? ? ? ? ? ? </plugin>

? ? ? ? </plugins>

? ? </build>

?

OK,現在來講解一番:

?

Configuration-Server

?

Configuration中的server是個變量,叫tomcat.deploy.server,我并沒有寫死,因為我們要將WAR包部署到不同服務器去,而這個變量則由前面的properties來確定,我們可以看到,properties中,tomcat.deploy.server被賦值為localTestServer,這就是我們的默認值,但通過調整Maven的運行參數,我們可以將它修改為別的值,那么localTestServer又表示什么呢?我前面說了,服務器的密碼是自己定的,而且不希望別人知道,別的開發組員能各自決定自己本地服務器的密碼,但他們無需知道我的密碼,所以這個localTestServer的相關的內容是定義在“~/.m2/settings.xml”中的,在Windows7下通常就是在“C:\Users\(用戶名)\.m2\settings.xml”這里。打開這個配置文件,在servers中增加兩個server,也就是我們要將程序部署上去的兩個server。

?

<servers>

? ? <server>

? ? ? ? <id>productionServer</id>

? ? ? ? <username>deployer</username>

? ? ? ? <password>123456</password>

? ? </server>

? ? <server>

? ? ? ? <id>localTestServer</id>

? ? ? ? <username>deployer</username>

? ? ? ? <password>654321</password>

? ? </server>

</servers>

?

這個貌似沒什么好說了,這個配置非常的self-explanatory。

?

Configuration-url

?

Configuration中的url也是個變量,很顯然,我也不能把它寫死,但它不像用戶名和密碼那么敏感,所以直接出現在POM.XML中也無所謂,默認情況下,其值是“http://localhost/manager/text”,這個地址便是Tomcat的Manager模塊的后臺腳本入口,url的值同樣可以通過Maven的運行參數調整。

?

Configuration-path

?

要將WAR包部署到哪里去?要指定一個path,如果path為“/”,也就是部署為傳說中的ROOT.WAR,這次我們指定了一個名為MyWebAppDemo的path。部署成功之后可以通過http://localhost/MyWebAppDemo來訪問。

?

profile參數

?

也就是前面提到的Maven的參數,這里我們定了一個參數,叫deploy2production,在運行mvn的時候帶上這個參數的話,就會用參數中的tomcat.deploy.server,tomcat.deploy.serverUrl來取代默認的值。

?

OK,所有的工作都完成了,就剩下部署了。開始吧:

?

mvn tomcat7:redeploy

?

為什么是redeploy而不是deploy?因為用deploy的話在我這里會出現些問題,具體啥問題就不說了,也許你那里正常,如果沒問題的話用deploy也行啊。執行完這個之后,我們的程序就被部署到本地Tomcat服務器上了。再來看,這是帶參數的mvn:

?

mvn tomcat7:redeploy -Pdeploy2production

?

這么一下,我們的程序就被部署到正式服務器去了。

?

如果你想把程序移除掉,那很簡單,只需要使用undeploy來代替redeploy即可。

轉載于:https://www.cnblogs.com/zrbfree/p/6709078.html

總結

以上是生活随笔為你收集整理的170329、用 Maven 部署 war 包到远程 Tomcat 服务器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。