最近出于项目需要,希望在JBoss AS上通过Maven部署发布应用程序。以前jetty和tomcat还好,maven都有不错的插件支持,jboss的似乎就差一些了,似乎只有mojo和cargo这两个支持maven2插件来允许动态发布。我选择cargo作为研究方向:
- Cargo的页面比较专业,信息丰富。相比来说,mojo的页面似乎就是maven site自己生成的页面,没什么有用的信息;
- Cargo支持远程发布,这也是很吸引我的特性;
- Cargo和mojo不管谁好谁坏,我其实用的只是最肤浅的功能,所以,呵呵,择一研究即可。
Cargo Maven Plugin的主页: http://cargo.codehaus.org/Maven2+plugin
本blog抱着工具就是可用就行的态度,通过一个简单的例子,看看如何利用maven创建并用cargo发布程序。
1. 创建演示用web应用程序
利用maven archetype创建基本的web应用程序。具体信息,参考http://maven.apache.org/guides/mini/guide-webapp.html 。
此命令用来创建mywebapp的目录,在mywebapp目录中,包含一个maven enable的最基本的web应用程序。
2. 打包web应用程序
利用maven的package命令,打包web应用程序
3. 发布到jetty上
修改pom.xml加入Cargo plugin,默认值即是jetty,所以只需很少配置。
在命令行输入
Cargo即可自行下载jetty,并发布程序了。用户可以通过访问http://localhost:8080/mywebapp 访问发布的程序。
4. 发布到tomcat 6.x上
修改pom.xml加入Cargo plugin,同时,由于tomcat不再是默认值,因此需要配置cargo中的一些与tomcat有关的参数。
除了加上了containerId等不同外,与jetty的配置不同的,还有就是引入了container.home,这种方式适用于下载好container的情况下,用下载的container启动发布,避免了每次clean后都要重新下载container的问题。不过,这个也是个人喜好的问题了…
修改完pom.xml后,运行maven cargo:start后,即可启动tomcat了。
5. 发布到JBossAS 5上
JBossAS5的Maven插件还处于试验阶段,不过用了用,还算好用。不过对于pom的修改复杂一点。
需要注意的一点是,JBossAS对于内存的消耗较大,默认的java内存可能不够用,因此需要引入cargo.jvmargs来手动设置内存大小。具体信息参考http://labs.jboss.com/community/wiki/CargoMavenplugin-raisingPermGenforJBossAS5?decorator=print 。
同样,通过mvn cargo:start启动后,可以通过浏览器访问网页程序确认发布的正确性。
6. 小结
Cargo提供了非常丰富的功能和配置参数,以上只是我举得一个简单的例子,其中很多参数没有涉及,另外即使涉及了一些参数,具体意义仍需各位参考cargo官方文档。诸位请把这个例子作为cargo的一个helloworld程序,相信可以节省一些时间,我的目的就达到了。