標籤:cargo jenkins tomcat maven 遠程部署
轉載請標明出處:
http://blog.csdn.net/ouyida3/article/details/48089141
本文出自:【ouyida3的部落格】
tomcat-users.xml配置
<role rolename="manager"/><role rolename="manager-script"/> <role rolename="manager-gui"/> <role rolename="manager-jmx"/><role rolename="manager-status"/> <user username="admin" password="admin" roles="manager,manager-gui,manager-script,manager-jmx,manager-status"/>
pom.xml配置
<plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId> <version>1.4.15</version> <configuration> <container> <containerId>tomcat8x</containerId> <type>remote</type> </container> <configuration> <type>runtime</type> <properties> <cargo.tomcat.manager.url>http://32.20.115.125:8080/manager</cargo.tomcat.manager.url> <cargo.remote.username>admin</cargo.remote.username> <cargo.remote.password>admin</cargo.remote.password> <cargo.servlet.port>8080</cargo.servlet.port> <cargo.hostname>32.20.115.125</cargo.hostname> <cargo.tomcat.ajp.port>8009</cargo.tomcat.ajp.port> </properties> </configuration> </configuration></plugin>
測試命令
mvn cargo:redeploy
成功:
F:\code\bss_gd-trunk\mapp\zsale\zsale-web>mvn cargo:redeploy[INFO] Scanning for projects...[INFO][INFO] ------------------------------------------------------------------------[INFO] Building zsale-web 0.0.1-SNAPSHOT[INFO] ------------------------------------------------------------------------[INFO][INFO] --- cargo-maven2-plugin:1.4.15:redeploy (default-cli) @ zsale-web ---[INFO] [DeployerRedeployMojo] Resolved container artifact org.codehaus.cargo:cargo-core-container-tomcat:jar:1.4.15 for container tomcat8x[INFO] [mcat8xRemoteDeployer] Redeploying [F:\code\bss_gd-trunk\mapp\zsale\zsale-web\target\zsale-web-0.0.1-SNAPSHOT.war][INFO] [mcat8xRemoteDeployer] Undeploying [F:\code\bss_gd-trunk\mapp\zsale\zsale-web\target\zsale-web-0.0.1-SNAPSHOT.war][INFO] [mcat8xRemoteDeployer] Deploying [F:\code\bss_gd-trunk\mapp\zsale\zsale-web\target\zsale-web-0.0.1-SNAPSHOT.war][INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 38.813 s[INFO] Finished at: 2015-08-29T17:23:50+08:00[INFO] Final Memory: 6M/17M[INFO] ------------------------------------------------------------------------
ps:第一次運行會下載cargo相關的jar
報錯解決方案
運行mvn cargo:redeploy報錯
Caused by: java.net.ConnectException: Connection refused: connect
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:534)
如果tomcat沒啟動,也會報這個錯。如果啟動了也報這個錯,首先先通過瀏覽器訪問,看看行不行。因為代碼裡就是使用HttpConnection來connect的。
查看原始碼的方法請看下面
如果瀏覽器可以訪問,就是配置錯了。
注意:cargo.hostname是必須配置的,如果不配置預設是localhost!也就是說cargo.tomcat.manager.url裡配置了什麼都是不起作用的。連接埠也一樣,要配置。
原始碼代碼查看方法
假設使用的是cargo-core-container-tomcat-1.4.9.jar這個版本,則在pom.xml裡依賴一下這個jar,然後執行命令mvn dependency:sources即可。這條命令會把pom.xml裡依賴的jar都下載原始碼,當然,如果本身這個jar是不提供原始碼的就不會下載,執行命令的最後會提示哪些下載了哪些沒下載。
吐槽一下
許曉斌的《Maven實戰》這本書確實非常好。但是,關於cargo遠程部署這一章節就有點敷衍了事了!只列舉了一個localhost的配置例子,明明是遠程部署,怎能用localhost作例子呢?搞得我因為這個導致connection refused錯誤弄了半天才搞定。
使用者名稱密碼錯誤
Caused by: org.codehaus.cargo.container.tomcat.internal.TomcatManagerException:
The username and password you provided are not correct (error 401)
如果使用者名稱密碼錯誤,則報這個錯。
關於版本
我嘗試了1.4.9和最新的1.4.15都沒有問題。
tomcat我使用的是tomcat8,containerId嘗試了tomcat7x和tomcat8x都可以(tomcat9x當然不行的)。證明tomcat7x的配置也是相容tomcat8的。
參考
jenkins部署tomcat
http://wxynxyo.iteye.com/blog/1909110 有jenkins的圖
http://my.oschina.net/congqian/blog/112782
http://blog.sina.com.cn/s/blog_b5fe6b270102v7xi.html 沒試過,好像挺方便
cargo
http://zhouhaitao.iteye.com/blog/1997135
http://blog.csdn.net/steveguoshao/article/details/38469713 較詳細
http://www.codeweblog.com/use-maven-cargo-plugin-manager-deployment-tomcat6/ 更詳細,但是英文(就是這個文章解決了我的大難題)
cargo官網:
https://codehaus-cargo.github.io/cargo/Home.html
http://cargo.codehaus.org/(以前的官網,現已自動跳轉)
擴充-Capitomcat
Capitomcat 是jenkins的外掛程式,據說也可以部署tomcat。但是被牆了!我沒試。
Ruby Runtime Plugin 等待
Capitomcat Plugin 等待
重啟 Jenkins 等待
Failed to connect to http://www.google.com/. Perhaps you need to
另外,cargo部署分為遠程部署和本地部署。本文只講述前者,因為後者在生產環境意義不大。本地部署比較簡單,看看許曉斌的書《Maven實戰》或者網上的例子就可。
轉載請標明出處:
本文出自:【ouyida3的部落格】
2015.8.29
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
使用cargo實現jenkins自動部署遠程tomcat