maven实战(九)使用Cargo实现自动化部署
2017-07-28 00:33
495 查看
Cargo是一组帮助用户操作Web容器的工具,它能够帮助用户实现自动化部署,而且它几乎支持所有的web容器,如Tomcat、JBoss、Jetty和Glassfish等。Cargo通过cargo-maven2-plugin提供了maven集成,Maven用户可以使用该插件将Web项目部署到web容器中。例如专门的测试人员只需要一条简单的Maven命令,就可以构建项目并部署到Web容器中,然后进行功能测试。
上述cargo-maven2-plugin的具体配置包括了container和configuration两个元素,configuration的子元素type表示部署的模式(这里是standalone)。与之对应的,configuration的home子元素表示复制容器配置到什么位置,这里的值为${project.build.directory}/tomcat7x,表示构建输出的目录,即target/下的tomcat7x子目录。container元素下的containerId表示容器的类型,home元素表示容器的安装目录。基于该配置,Cargo会从D;\tomcat-7.0.39目录下复制配置到当前项目的target/tomcat7x目录下。
现在,要让Cargo启动Tomcat并部署应用,只需要运行:
mvn cargo:start
以web应用为例,就可以访问浏览器了。
默认情况下,Cargo会让web容器监听8080端口。可以通过修改Cargo的cargo.servlet.port属性来改变这一配置,如下所示:
上述代码中configuration元素的type子元素的值为existing,而对应的home子元素表示现有的Web容器的目录,基于该配置运行mvn cargo:start之后,便能够在Tomcat的webapps子目录看到被部署的Maven项目。
对于远程部署的方式来说,container元素的type子元素的值必须为remote。如果不显式指定,Cargo会使用默认值installed,并寻找对应的容器安装目录或者安装包,对于远程部署方式来说,安装目录和安装包是不需要的。上述代码中configuration的type子元素值为runtime,表示既不使用独立的容器配置,也不使用本地现有的容器配置,而是依赖于一个已运行的容器。properties元素用来声明一些容器热部署相关的配置。例如,这里的Tomcat7就需要提供用户名、密码以及管理地址。需要注意的是,这部分配置元素对于所有容器来说不是一致的,读者需要查阅对应的Cargo文档。
有了上述配置后,就可以让Cargo部署应用了,运行命令如下:
mvn cargo:redeploy
由于自动化部署本身就不是简单的事情,再加上Cargo要兼容各种不同类型的Web容器,因此cargo-maven2-plugin的相关配置会显得相对复杂,这个时候完善的文档就显得尤为重要。如果想进一步了解Cargo,可访问http://cargo.codehaus.org/Maven2+plugin。
这一套配置比较老了,我在csdn找到了一篇不错的文章,配置也很正确,有兴趣的可以看看:http://blog.csdn.net/steveguoshao/article/details/38469713
部署至本地Web容器
Cargo支持两种本地部署的方式,分别为standalone模式和existing模式。在standalone模式中,Cargo会从web容器的安装目录复制一份配置到用户指定的目录,然后在此基础上部署应用,每次重新构建的时候,这个目录都会被清空,所有配置被重新生成。而在existing模式中,用户需要指定现有的Web容器配置目录,然后Cargo会直接使用这些配置并将应用部署到其对应的位置。下面代码展示了standalone模式的配置样例。<plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId> <version>1.0</version> <configuration> <container> <containerId>tomcat7x</containerId> <home>D:\tomcat-7.0.39</home> </container> <configuration> <type>standalone</type> <home>${project.build.directory}/tomcat7x</home> </configuration> </configuration> </plugin>cargo-maven2-plugin的groupId是org.codehaus.cargo,这不属于官方的两个Maven插件groupId,因此用户需要将其添加到settings.xml的pluginGroup元素中以方便命令行调用。
上述cargo-maven2-plugin的具体配置包括了container和configuration两个元素,configuration的子元素type表示部署的模式(这里是standalone)。与之对应的,configuration的home子元素表示复制容器配置到什么位置,这里的值为${project.build.directory}/tomcat7x,表示构建输出的目录,即target/下的tomcat7x子目录。container元素下的containerId表示容器的类型,home元素表示容器的安装目录。基于该配置,Cargo会从D;\tomcat-7.0.39目录下复制配置到当前项目的target/tomcat7x目录下。
现在,要让Cargo启动Tomcat并部署应用,只需要运行:
mvn cargo:start
以web应用为例,就可以访问浏览器了。
默认情况下,Cargo会让web容器监听8080端口。可以通过修改Cargo的cargo.servlet.port属性来改变这一配置,如下所示:
<plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId> <version>1.0</version> <configuration> <container> <containerId>tomcat7x</containerId> <home>D:\cmd\apache-tomcat-6.0.29</home> </container> <configuration> <type>standalone</type> <home>${project.build.directory}/comcat7x</home> <properties> <cargo.servlet.port>8081</cargo.servlet.port> </properties> </configuration> </configuration> </plugin>要将应用直接部署到现有d的web容器下,需要配置Cargo使用existing模式,如下所示:
<plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId> <version>1.0</version> <configuration> <container> <containerId>tomcat7x</containerId> <home>D:\tomcat-7.0.39</home> </container> <configuration> <type>existing</type> <home>D:\tomcat-7.0.39</home> </configuration> </configuration> </plugin>
上述代码中configuration元素的type子元素的值为existing,而对应的home子元素表示现有的Web容器的目录,基于该配置运行mvn cargo:start之后,便能够在Tomcat的webapps子目录看到被部署的Maven项目。
部署至远程web容器
除了让Cargo直接管理本地web容器然后部署应用外,还可以让Cargo部署应用至远程的正在运行的Web容器中。当然,前提是拥有该容器的相应管理员权限。相关配置如下:<plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId> <version>1.0</version> <configuration> <container> <containerId>tomcat7x</containerId> <type>remote</type> </container> <configuration> <type>runtime</type> <properties> <cargo.remote.username>admin</cargo.remote.username> <cargo.remote.password>admin123</cargo.remote.password> <cargo.tomcat.manager.url>http://localhost:8080/manager</cargo.tomcat.manager.url> </properties> </configuration> </configuration> </plugin>
对于远程部署的方式来说,container元素的type子元素的值必须为remote。如果不显式指定,Cargo会使用默认值installed,并寻找对应的容器安装目录或者安装包,对于远程部署方式来说,安装目录和安装包是不需要的。上述代码中configuration的type子元素值为runtime,表示既不使用独立的容器配置,也不使用本地现有的容器配置,而是依赖于一个已运行的容器。properties元素用来声明一些容器热部署相关的配置。例如,这里的Tomcat7就需要提供用户名、密码以及管理地址。需要注意的是,这部分配置元素对于所有容器来说不是一致的,读者需要查阅对应的Cargo文档。
有了上述配置后,就可以让Cargo部署应用了,运行命令如下:
mvn cargo:redeploy
由于自动化部署本身就不是简单的事情,再加上Cargo要兼容各种不同类型的Web容器,因此cargo-maven2-plugin的相关配置会显得相对复杂,这个时候完善的文档就显得尤为重要。如果想进一步了解Cargo,可访问http://cargo.codehaus.org/Maven2+plugin。
这一套配置比较老了,我在csdn找到了一篇不错的文章,配置也很正确,有兴趣的可以看看:http://blog.csdn.net/steveguoshao/article/details/38469713
相关文章推荐
- 【maven实战】41-使用cargo-maven2-plugin实现自动化部署
- Maven使用Cargo实现自动化部署
- Maven使用Cargo实现自动化部署
- Maven使用Cargo实现自动化部署到Web容器
- Maven使用Cargo实现自动化部署 - steveguoshao的专栏 - 博客频道 - CSDN.NET
- Maven使用Cargo实现自动化部署
- Maven使用Cargo实现自动化部署
- 使用Maven插件Cargo实现自动化部署
- Maven使用Cargo实现自动化部署
- 使用Cargo实现自动化部署
- 使用Cargo实现自动化部署
- 使用Cargo实现自动化部署
- 使用cargo自动化部署maven项目
- maven使用cargo插件自动化(本地、远程)部署
- 使用cargo-maven2-plugin插件自动化部署项目时遇到的问题
- 在jenkins里maven使用cargo部署失败
- 使用Maven实现一键部署war到Tomcat
- 09(maven+SSH)网上商城项目实战之使用jersey实现应用服务器和图片服务器分离
- 使用Jenkins实现自动化部署
- 使用Jenkins实现Jetty热部署Maven程序(20s极速)