用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檔案,增加這樣的配置:
1<user username="deployer" password="654321" roles="manager-script"/>
這個叫“deployer”的使用者,角色設定為“manager-script”,表明他可以使用Tomcat的manager模組的後臺指令碼管理,BTW,如果角色為“manager-gui”則表示此使用者可使用manager模組的前端網頁管理。然後對正式伺服器也做一個類似的配置。
接下來完善一下tomcat7-maven-plugin的配置:
<properties>
<warPackageName>MyDemo</warPackageName>
<tomcat.deploy.server>localTestServer</tomcat.deploy.server>
<tomcat.deploy.serverUrl>
</properties>
<profiles>
<profile>
<id>deploy2production</id>
<properties>
<tomcat.deploy.server>productionServer</tomcat.deploy.server>
<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(使用者名稱).m2settings.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中也無所謂,預設情況下,其值是“”,這個地址便是Tomcat的Manager模組的後臺指令碼入口,url的值同樣可以透過Maven的執行引數調整。
Configuration-path
要將WAR包部署到哪裡去?要指定一個path,如果path為“/”,也就是部署為傳說中的ROOT.WAR,這次我們指定了一個名為MyDemo的path。部署成功之後可以透過來訪問。
profile引數
也就是前面提到的Maven的引數,這裡我們定了一個引數,叫deploy2production,在執行mvn的時候帶上這個引數的話,就會用引數中的tomcat.deploy.server,tomcat.deploy.serverUrl來取代預設的值。
OK,所有的工作都完成了,就剩下部署了。開始吧:
1mvn tomcat7:redeploy
為什麼是redeploy而不是deploy?因為用deploy的話在我這裡會出現些問題,具體啥問題就不說了,也許你那裡正常,如果沒問題的話用deploy也行啊。執行完這個之後,我們的程式就被部署到本地Tomcat伺服器上了。再來看,這是帶引數的mvn:
作者:java菜
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1868/viewspace-2818641/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 將Web專案War包部署到Tomcat伺服器WebTomcat伺服器
- Maven遠端Tomcat熱部署MavenTomcat熱部署
- Maven deploy部署jar包到遠端私倉MavenJAR
- 三種遠端部署war包檢測
- 使用SSH上傳部署WAR包到伺服器伺服器
- 三分鐘把spring boot打成war包部署到tomcat中Spring BootTomcat
- springboot 整合外部tomcat war包部署方式Spring BootTomcat
- Jenkins部署Web專案到遠端tomcatJenkinsWebTomcat
- Maven推送本地jar包到遠端私有倉庫配置MavenJAR
- 使用docker搭建環境:安裝tomcat、部署war包DockerTomcat
- Tomcat 部署時 war 和 war exploded 區別Tomcat
- Tomcat部署時war和war exploded區別Tomcat
- 遠端部署應用程式:一臺伺服器執行兩個tomcat伺服器Tomcat
- 部署ASP.NET到遠端IIS伺服器ASP.NET伺服器
- Windows IDEA 專案(Scala+Sbt、Scala+Maven)建立與遠端部署到Linux(遠端部署其它專案也適用)WindowsIdeaMavenLinux
- Maven部署構件至遠端倉庫Maven
- spring_boot 釋出成war包 ,部署到外部的tomcatSpringbootTomcat
- window系統下安裝openjdk,tomcat部署springboot war包JDKTomcatSpring Boot
- Linux伺服器上搭建測試環境(war包+tomcat)Linux伺服器Tomcat
- 【IDEA小技巧】Tomcat部署 war和war exploded的區別IdeaTomcat
- 在Ubuntu上使用Jetty部署War包UbuntuJetty
- 通過tomcat的ManagerServlet遠端部署專案TomcatServlet
- maven本地構件分發到遠端倉庫Maven
- SpringBoot配置外部Tomcat並打war包Spring BootTomcat
- 菜鳥教程之工具使用(三)——Maven自動部署到TomcatMavenTomcat
- maven專案生成的war包在tomcat下執行報錯MavenTomcat
- maven引入本地jar,部署到伺服器上找不到MavenJAR伺服器
- IDEA社群版如何用tomcat執行war包IdeaTomcat
- Java應用伺服器之tomcat部署Java伺服器Tomcat
- iOS列印日誌到遠端伺服器iOS伺服器
- 如何將War檔案部署到Spring Boot嵌入式的Tomcat中 - Vojtech RuzickaSpring BootTomcat
- 如何釋出本地maven專案jar包部署到nexus私服?MavenJAR
- SpringBoot專案部署到Linux端Tomcat伺服器上,並直接通過域名訪問應用Spring BootLinuxTomcat伺服器
- Maven遠端倉庫的配置Maven
- 對映遠端埠到本地埠(用於伺服器tensorboard觀察)伺服器ORB
- FTP 傳送檔案到遠端伺服器FTP伺服器
- java web專案war包自動升級部署方案JavaWeb
- Jenkins 流水線遠端部署 .NET Core/Framework 到 IISJenkinsFramework