Maven部署war至Tomcat
文章目錄
Maven部署war至Tomcat
概述
為了減輕開發人員負擔及避免手動部署失誤,Tomcat提供了打包並部署war包至Tomcat的Maven外掛。
問題描述及使用場景
- 場景: 部署新功能上線時,需要先打包生成war,再手動將其放置Tomcat的相關目錄下並啟動。
- 問題: 手動操作就有可能會存在誤操,且需要耗費相關人力。那麼是否有相關Maven外掛可以實現自動打包並部署war至Tomcat的功能呢?
- 解決: 通過學習Tomcat61及Tomcat72提供的
Manager App HOW-TO
發現Tomcat3開發了自動打包及部署war至Tomcat的Maven plugin, 並提供了相應的Maven命令4.
簡要實現
- 基礎環境
- JDK8
- Maven 3
- Tomcat 6.0.37/Tomcat 7.0.53
- Tomcat 6
## 釋出URL: (http://localhost:8080/manager/)
<protocol>://<domain name>:<port>/manager/
## 命令:
mvn tomcat6:deploy
- Tomcat 7
## 釋出URL: (http://localhost:8080/manager/text)
<protocol>://<domain name>:<port>/manager/text
## 命令:
mvn tomcat7:deploy
Tomcat 7 示例
這個例子說明了如何在Tomcat7打包並部署WAR檔案。
Tomcat認證
在%TOMCAT7_PATH%/conf/tomcat-users.xml
檔案中, 新增具有角色管理器GUI和管理指令碼的使用者。
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="admin" password="password" roles="manager-gui,manager-script" />
</tomcat-users>
Maven認證
在%MAVEN_PATH%/conf/settings.xml
檔案中, 新增上面的Tomcat 使用者,Maven使用該使用者來登入Tomcat伺服器。
<?xml version="1.0" encoding="UTF-8"?>
<settings ...>
<servers>
<server>
<id>TomcatServer</id>
<username>admin</username>
<password>password</password>
</server>
</servers>
</settings>
Tomcat7 Maven 外掛
在pom.xml
檔案中, 宣告一個Maven的Tomcat外掛。
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>http://localhost:8080/manager/text</url>
<server>TomcatServer</server>
<path>/yiibaiWebApp</path>
</configuration>
</plugin>
怎麼執行的
Maven使用settings.xml
中TomcatServer
對應的使用者名稱及密碼進行Tomcat的認證, 驗證通過後Maven通過http://localhost:8080/manager/text
將war檔案部署至同域名Tomcat伺服器path
為/yiibaiWebApp
的webapps
路徑下.
釋出到Tomcat
操作Tomcat WAR檔案的命令如下:
mvn tomcat7:deploy
mvn tomcat7:undeploy
mvn tomcat7:redeploy
示例
> mvn tomcat7:deploy
...
[INFO] Deploying war to http://localhost:8080/yiibaiWebApp
Uploading: http://localhost:8080/manager/text/deploy?path=%2FyiibaiWebApp&update=true
Uploaded: http://localhost:8080/manager/text/deploy?path=%2FyiibaiWebApp&update=true (13925 KB at 35250.9 KB/sec)
[INFO] tomcatManager status code:200, ReasonPhrase:OK
[INFO] OK - Deployed application at context path /yiibaiWebApp
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8.507 s
[INFO] Finished at: 2015-08-05T11:35:25+08:00
[INFO] Final Memory: 28M/308M
[INFO] ------------------------------------------------------------------------
Tomcat 6 示例
這個例子說明了如何在Tomcat6打包和部署WAR檔案。這些步驟和Tomcat7是一樣的,只是部署URL和命令名稱不同。
Tomcat認證
在%TOMCAT6_PATH%/conf/tomcat-users.xml
檔案中, 新增具有角色管理器GUI和管理指令碼的使用者。
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="admin" password="password" roles="manager-gui,manager-script" />
</tomcat-users>
Maven認證
在%MAVEN_PATH%/conf/settings.xml
檔案中, 新增上面的Tomcat 使用者,Maven使用該使用者來登入Tomcat伺服器。
<?xml version="1.0" encoding="UTF-8"?>
<settings ...>
<servers>
<server>
<id>TomcatServer</id>
<username>admin</username>
<password>password</password>
</server>
</servers>
</settings>
Tomcat7 Maven 外掛
在pom.xml
檔案中, 宣告一個Maven的Tomcat外掛。
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat6-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>http://localhost:8080/manager</url>
<server>TomcatServer</server>
<path>/yiibaiWebApp</path>
</configuration>
</plugin>
怎麼執行的
Maven使用settings.xml
中TomcatServer
對應的使用者名稱及密碼進行Tomcat的認證, 驗證通過後Maven通過http://localhost:8080/manager
將war檔案部署至同域名Tomcat伺服器path
為/yiibaiWebApp
的webapps
路徑下.
釋出到Tomcat
操作Tomcat WAR檔案的命令如下:
mvn tomcat6:deploy
mvn tomcat6:undeploy
mvn tomcat6:redeploy
示例
> mvn tomcat6:deploy
...
[INFO] Deploying war to http://localhost:8080/yiibaiWebApp
Uploading: http://localhost:8080/manager/deploy?path=%2FyiibaiWebApp
Uploaded: http://localhost:8080/manager/deploy?path=%2FyiibaiWebApp (13925 KB at 32995.5 KB/sec)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 22.652 s
[INFO] Finished at: 2014-08-05T12:18:54+08:00
[INFO] Final Memory: 30M/308M
[INFO] ------------------------------------------------------------------------
疑問
該技術目前已經有些過時了, 已被當下以Kubernetes (K8s)
為核心的DevOps
雲技術所替代, 後者的自動部署/日誌分析/效能檢測等功能更加有優勢.
相關文章
- 用Maven部署war包到遠端Tomcat伺服器MavenTomcat伺服器
- Tomcat 部署時 war 和 war exploded 區別Tomcat
- Tomcat部署時war和war exploded區別Tomcat
- 【IDEA小技巧】Tomcat部署 war和war exploded的區別IdeaTomcat
- springboot 整合外部tomcat war包部署方式Spring BootTomcat
- 使用docker搭建環境:安裝tomcat、部署war包DockerTomcat
- window系統下安裝openjdk,tomcat部署springboot war包JDKTomcatSpring Boot
- 三分鐘把spring boot打成war包部署到tomcat中Spring BootTomcat
- AWS CodePipeline部署Maven專案至EC2Maven
- jenkins+git+maven+tomcat 實現自動打包部署JenkinsGitMavenTomcat
- SpringBoot配置外部Tomcat並打war包Spring BootTomcat
- 如何將War檔案部署到Spring Boot嵌入式的Tomcat中 - Vojtech RuzickaSpring BootTomcat
- Springboot2專案配置(熱部署+war+外部tomcat+外部配置檔案)Spring Boot熱部署Tomcat
- Maven - No plugin found for prefix 'war' in the current project and in the plugin groupsMavenPluginProject
- IDEA社群版如何用tomcat執行war包IdeaTomcat
- 在Ubuntu上使用Jetty部署War包UbuntuJetty
- IDEA 2021版新建Maven、TomCat工程IdeaMavenTomcat
- 三種遠端部署war包檢測
- 從零手寫實現 tomcat-07-war 如何解析處理三方的 war 包?Tomcat
- linux下部署 tomcatLinuxTomcat
- Linux伺服器上搭建測試環境(war包+tomcat)Linux伺服器Tomcat
- 部署Maven專案到tomcat報錯:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderLi...MavenTomcatJavaExceptionSpringFrameworkWebContext
- maven專案打包後war檔案丟失配置檔案Maven
- mac 安裝jdk,maven,tomcat彙總MacJDKMavenTomcat
- 將springboot部署到tomcatSpring BootTomcat
- Tomcat 8安裝部署Tomcat
- Tomcat部署及優化Tomcat優化
- windows tomcat 簡單部署WindowsTomcat
- Maven 自動化部署Maven
- Maven自動化部署Maven
- Eclipse匯出Maven專案生成war包的兩種辦法EclipseMaven
- web server apache tomcat11-26-maven jarsWebServerApacheTomcatMavenJAR
- keeplied + nginx +tomcat 高可用部署NginxTomcat
- Tomcat部署web專案流程TomcatWeb
- 建立maven後怎樣把自帶的tomcat6改成tomcat7 ?MavenTomcat
- windows下安裝jdk+tomcat+maven並配置WindowsJDKTomcatMaven
- 使用Dockerfile建立一個tomcat映象,並執行一個簡單war包DockerTomcat
- Centos8部署jdk、mysql8、tomcat,並部署專案到tomcat中CentOSJDKMySqlTomcat