最近接手了幾個 tomcat 的 web 應用梆暮,每次功能上線的時候都要收工部署到遠程的開發(fā)環(huán)境黄橘、生產環(huán)境蒙秒,操作步驟挺多的桑李,本著能機器做的絕不人工做的原則找了幾個自動部署的方案麻昼,對比了一下恰响,發(fā)現 maven 的 cargo-maven2-plugin 插件最適合當前場景,分享一下涌献。
這個插件的工作原理是利用 tomcat 自帶的 manager 應用來部署 web 應用胚宦,項目介紹 https://codehaus-cargo.github.io/cargo/Home.html
要做的步驟也挺簡單,以我本機的 tomcat8 為例燕垃。首先確保要部署的遠程環(huán)境中的 tomcat 下已經存在 manager 應用枢劝,接著配置 tomcat8 下 manger 訪問的 role username password ,修改 tomcat8/conf/tomcat-users.xml 文件卜壕,增加如下配置:
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin" password="123456" roles="manager-gui,manager-script,manager-jmx,manager-status"/>
為了能讓用戶能以 text 訪問 manager 您旁,最好給分配的用戶名配置上所有這四種tomcat 預定義的角色 manager-gui、manager-script轴捎、manager-jmx鹤盒、manager-status
接著在實際的 web 項目的 pom 文件中增加插件配置:
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<version>1.5.0</version>
<configuration>
<container>
<containerId>tomcat8x</containerId>
<type>remote</type>
</container>
<configuration>
<type>runtime</type>
<properties>
<cargo.protocol>http</cargo.protocol>
<cargo.hostname>實際域名</cargo.hostname>
<cargo.servlet.port>實際端口號</cargo.servlet.port>
<cargo.remote.username>admin</cargo.remote.username>
<cargo.remote.password>123456</cargo.remote.password>
<cargo.remote.uri>http://實際域名:實際端口號/manager/text</cargo.remote.uri>
</properties>
</configuration>
</configuration>
</plugin>
cargo.remote.username 和 cargo.remote.password 就是上面配置的 tomcat-users.xml 文件里 user 節(jié)點的 username 和 password ,cargo.remote.uri 里的 http://實際域名:實際端口號/ 就是遠程部署的tomcat實際訪問的根路徑地址侦副。
最后在 web 項目根目錄運行命令:
mvn org.codehaus.cargo:cargo-maven2-plugin:redeploy
一鍵遠程部署 web 應用就搞定了侦锯。
如果想命令短一點可以在 maven 的 settings.xml 中增加一個 pluginGroup :
<pluginGroups>
<pluginGroup>org.codehaus.cargo</pluginGroup>
</pluginGroups>
這樣命令就可以簡寫成:
mvn cargo:redeploy