使用Maven Cargo 插件进行远程Tomcat6的部署
上一篇 /
下一篇 2012-06-06 17:07:06
/ 个人分类:Maven
转帖:http://jdonee.iteye.com/blog/774387
一、引言
朋友,也许你也已经使用Maven有一段时间了,你已得益于Maven优美的管理方式,但是常常因为构建webapp而需手动发布到Tomcat而发愁。当然,你也有想到过通过脚本、FTP或者SSH的方式发布一个的最新WAR快照到Tomcat,对,这么做也不失为一种解决办法。但你也可能会想有没有更优雅的通过Maven插件来做到这一点吗?答案是肯定的,我找到了两个相关的插件-----Tomcat Maven plugin和 Cargo plugin。
我首先试用了Tomcat Maven plugin,但我发现它实际上把项目部署到自己的Tomcat实例,而我想要的通过嵌入式的方式把项目发布到我本地的Tomcat,而不需要一个新的实例,所以我放弃了它。
所以我回来来找 Cargo plugin,发现它正是我想要的,但是它的帮助文档让我抓狂,去看过的朋友估计和我有一样感同深受。不过,通过看它的文档,也锻炼我的耐心,经过一番周折,我部署成功了,所以我把它们贡献出来,和大家一起分享。
二、教程必需条件
环境:Windows XP SP2及以上
工具要求:apache-maven-3.0-beta-2、Tomcat6.0.29
插件要求:cargo-maven2-plugin(Maven)
本文章将引导你如何通过使用Maven Cargo 插件把一个Web应用程序发布到Tomcat6。Cargo是一个基于标准方式发布Web应用程序到Java EE容器的瘦包装器,它能发布到多种Web服务器,如Geronimo、Glassfish、JBoss、Tomcat、Jetty、WebLogic等。
Cargo包含如下工具和API:
-
- 启动/停止/配置Java容器和部署模块到Java容器的API。
- 解析/创建/合并Java EE模块的API。
- Ant 任务, Maven 1、 Maven 2 插件。
- 以插件形式集成在Intellij IDEA 和Netbeans中。
你可以通过配置您的pom.xml来决定您是否需要本地或者远程部署到您的tomcat服务器。
我的用例很简单,就是把一个Web项目发布到本地或者远程Tomcat环境。
下面包含了我本次教程的结构示例(呵呵,不算标准哟,大家自己扩充):
-
cargosample-parent
- pom.xml 1
- cargosample-webapp
- cargosample-deployer-local
- cargosample-deployer-remote
1、这是根pom,这里不会做有关于Cargo的操作,但是它包含了所有的子模块和Cargo所要用到的公共属性。
下面是该文件中关于跟Cargo有关的自定义属性的描述:
- <properties>
- <org.springframework.version>3.0.3.RELEASE</org.springframework.version>
- <org.slf4j.version>1.5.10</org.slf4j.version>
-
- <myproject.name>cargosample</myproject.name>
- <cargo.project.groupid>${project.groupId}</cargo.project.groupid>
- <cargo.project.artifactid>cargosample-webapp</cargo.project.artifactid>
-
- <catalina.home>${env.CATLINA_HOME}</catalina.home>
- <cargo.tomcat.manager.protocol>http</cargo.tomcat.manager.protocol>
- <cargo.tomcat.manager.hostname>127.0.0.1</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>1234</cargo.tomcat.manager.password>
- </properties>
2、这个pom包含web应用模块的描述和依赖关系。
3、这个pom包含发布项目到本地Tomcat,是本实例的重点之一。
4、这个pom包含发布项目到远程Tomcat。
值得一提注意的是,本次示例我使用的是同一个Tomcat来让Cargo模拟本地和远程两种方式来发布war。
因为我们需要部署sample-webapp的快照,把它作为以Cargo方式部署必需的依赖。所以我们在3和4中间都首先要添加对它的依赖。
- <dependencies>
- <dependency>
- <groupId>org.jdonee.cargosample</groupId>
- <artifactId>cargosample-webapp</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <type>war</type>
- </dependency>
- </dependencies>
三、部署项目到本地环境
接下来是在<build>节点下配置Cargo:
1)首先配置的是<container>节点,详细描述如下:
- <configuration>
- <wait>true</wait>
-
- <container>
- <!--
- 指定"tomcat6x"这个名称非常的重要!因为它是Cargo中一个完整的标识符,如果你把"x"去掉的话,
- 而只用"tomcat6"的话,它就不能在Tomcat 6.x下正常工作.
- -->
- <containerId>tomcat6x</containerId>
- <type>installed</type>
- <home>${catalina.home}</home>
- </container>
2)接下来配置容器的属性,详细描述如下:
收藏
举报
TAG:
Cargoplugin
maven
Maven
Maven插件
远程部署