用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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Maven部署war至TomcatMavenTomcat
- Maven deploy部署jar包到遠端私倉MavenJAR
- 三種遠端部署war包檢測
- springboot 整合外部tomcat war包部署方式Spring BootTomcat
- 三分鐘把spring boot打成war包部署到tomcat中Spring BootTomcat
- Jenkins部署Web專案到遠端tomcatJenkinsWebTomcat
- 使用docker搭建環境:安裝tomcat、部署war包DockerTomcat
- Tomcat部署時war和war exploded區別Tomcat
- Tomcat 部署時 war 和 war exploded 區別Tomcat
- window系統下安裝openjdk,tomcat部署springboot war包JDKTomcatSpring Boot
- Maven推送本地jar包到遠端私有倉庫配置MavenJAR
- Windows IDEA 專案(Scala+Sbt、Scala+Maven)建立與遠端部署到Linux(遠端部署其它專案也適用)WindowsIdeaMavenLinux
- Linux伺服器上搭建測試環境(war包+tomcat)Linux伺服器Tomcat
- 【IDEA小技巧】Tomcat部署 war和war exploded的區別IdeaTomcat
- 部署ASP.NET到遠端IIS伺服器ASP.NET伺服器
- SpringBoot配置外部Tomcat並打war包Spring BootTomcat
- 通過tomcat的ManagerServlet遠端部署專案TomcatServlet
- IDEA社群版如何用tomcat執行war包IdeaTomcat
- 在Ubuntu上使用Jetty部署War包UbuntuJetty
- 如何將War檔案部署到Spring Boot嵌入式的Tomcat中 - Vojtech RuzickaSpring BootTomcat
- SpringBoot專案部署到Linux端Tomcat伺服器上,並直接通過域名訪問應用Spring BootLinuxTomcat伺服器
- Java應用伺服器之tomcat部署Java伺服器Tomcat
- Jenkins部署SpringBoot應用到遠端伺服器JenkinsSpring Boot伺服器
- 將springboot部署到tomcatSpring BootTomcat
- maven引入本地jar,部署到伺服器上找不到MavenJAR伺服器
- Mac Jenkins 部署 SpringBoot 應用到遠端伺服器MacJenkinsSpring Boot伺服器
- Eclipse匯出Maven專案生成war包的兩種辦法EclipseMaven
- 從零手寫實現 tomcat-07-war 如何解析處理三方的 war 包?Tomcat
- Windows客戶端的JProfiler遠端監控Linux上的Tomcat伺服器Windows客戶端LinuxTomcat伺服器
- Jenkins 流水線遠端部署 .NET Core/Framework 到 IISJenkinsFramework
- 如何將React專案,部署到Web伺服器的Tomcat 上ReactWeb伺服器Tomcat
- 對映遠端埠到本地埠(用於伺服器tensorboard觀察)伺服器ORB
- java-jvisualvm遠端監控阿里雲伺服器上的TomcatJavaLVM阿里伺服器Tomcat
- 部署Maven專案到tomcat報錯:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderLi...MavenTomcatJavaExceptionSpringFrameworkWebContext
- 使用 SSH 遠端連線到 Linux 伺服器Linux伺服器
- SpringBoot部署到外部Tomcat無法註冊到Nacos服務端Spring BootTomcat服務端
- jenkins+git+maven+tomcat 實現自動打包部署JenkinsGitMavenTomcat
- springboot專案部署到tomcat容器Spring BootTomcat