使用cargo实现jenkins自动部署远程tomcat

转载请标明出处:
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:car
go-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-w
eb\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实战》或者网上的例子就可。

配置settings.xml

从上面的pom.xml可以看到,用户名密码都公开了,这显然是不好的,可以修改一下,通过settings.xml把密码隐藏起来。

<configuration>
<container>
        <containerId>tomcat8x</containerId>
        <type>remote</type>
    </container>
    <configuration>
        <type>runtime</type>
        <properties>
            <cargo.tomcat.manager.url>${cargo.tomcat.manager.protocol}://${cargo.tomcat.manager.hostname}:${cargo.tomcat.manager.port}/manager</cargo.tomcat.manager.url>
            <cargo.remote.username>${cargo.tomcat.manager.username}</cargo.remote.username>
            <cargo.remote.password>${cargo.tomcat.manager.password}</cargo.remote.password>
            <cargo.servlet.port>${cargo.tomcat.manager.port}</cargo.servlet.port>
            <cargo.hostname>${cargo.tomcat.manager.hostname}</cargo.hostname>
            <cargo.tomcat.ajp.port>${cargo.tomcat.manager.ajp.port}</cargo.tomcat.ajp.port>
        </properties>
    </configuration>
</configuration>

然后配置maven的conf/settings.xml

<profile>
    <id>cargo</id>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
        <cargo.tomcat.manager.protocol>http</cargo.tomcat.manager.protocol>
        <cargo.tomcat.manager.hostname>32.20.115.125</cargo.tomcat.manager.hostname>
        <cargo.tomcat.manager.port>8080</cargo.tomcat.manager.port>
        <cargo.tomcat.manager.ajp.port>8009</cargo.tomcat.manager.ajp.port>
        <cargo.tomcat.manager.username>admin</cargo.tomcat.manager.username>
        <cargo.tomcat.manager.password>admin</cargo.tomcat.manager.password>
    </properties>
</profile>

尤其注意的是,maven的profile都要激活的,所以下面还得配置一下activeProfiles:

<activeProfiles>
    <activeProfile>cargo</activeProfile>
</activeProfiles>

转载请标明出处:
本文出自:【ouyida3的博客
2015.8.29

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要重新部署WAR项目至Tomcat上,可以按照以下几个步骤进行操作: 1. 首先,将WAR文件复制到Tomcat的webapps目录中。可以新建一个目录,比如"D:\CODE\tomcatCode",然后将WAR文件复制到该目录下。 2. 接下来,Tomcat自动解压缩WAR文件,并将项目文件存储在一个以项目命名的新目录中。这个新目录会位于Tomcat的webapps目录下。 3. 如果需要进行一些特定的配置或设置,可以在Tomcat中进行相应的更改。具体设置的方法可以根据具体的需求而定。 4. 如果在部署后需要进行一些更改,可以使用命令"mvn tomcat7:redeploy"来重新部署项目。这个命令是使用MavenTomcat插件来进行重新部署的。 5. 另外,还可以使用Cargo插件来进行部署Cargo插件是一个用于容器化部署的工具,可以方便地进行WAR项目的部署和管理。具体的使用方法可以参考Cargo插件的文档。 综上所述,要重新部署WAR项目至Tomcat上,可以通过复制WAR文件到webapps目录、进行必要的配置更改以及使用MavenCargo插件实现。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Tomcat部署war程序](https://blog.csdn.net/weixin_43982687/article/details/127738598)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [如何将 WAR 文件部署Tomcat](https://blog.csdn.net/allway2/article/details/125911174)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值