一、jetty-maven-plugin介绍
1. maven中配置 jetty-maven-plugin:
pom.xml文件中如下配置:
1 <plugin> 2 <groupId>org.mortbay.jetty</groupId> 3 <artifactId>jetty-maven-plugin</artifactId> 4 <version>7.1.0.RC1</version> 5 <configuration> 6 <scanIntervalSeconds>10</scanIntervalSeconds> 7 <webAppConfig> 8 <contextPath>/account</contextPath> 9 </webAppConfig> 10 </configuration> 11 </plugin>
注:在上述配置中,scanIntervalSeconds表示该插件扫描项目变更的时间间隔,如果不进行配置,该元素的默认值是0,表示不扫描,也就失去了自动化热部署的功能;contextPath表示项目部署后的context path,例如这里的值为/account,表示用户可以通过http://hostname:port/account访问该应用。
2. 在启动jetty之前需要在maven的配置文件settings.xml做个改动,以便让maven支持简化的命令好调用jetty插件,配置如下:
在用户配置文件settings.xml中找到<pluginGroups></pluginGroups>,并在其中添加如下配置:
<pluginGroup>org.mortbay.jetty</pluginGroup>
现在就可以运行如下命令启动jetty-maven-piugin:
$mvn jetty:run
jetty-maven-piugin会启动jetty,并且默认监听本地的8080端口,并将当前项目部署到容器中,同时会根据用户配置扫描代码改动。
3. 如果希望使用其他端口,可以添加 jetty.port参数,例如:
$mvn jetty:run -Djetty.port=9990
4. 如要停止jetty,只需要在命令行输入Ctrl+C即可。
如需要进一步研究jetty,可访问页面:http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin
二、使用Cargo实现自动化部署介绍
1. Cargo是一组帮组用户操作Web容器的工具,它能够帮助用户实现自动化部署,而且它支持基础所有的Web容器,如tomcat、JBoss、Jetty等。Cargo通过cargo-mavne2-plugin提供maven集成。
2. 以tomcat7为例,介绍如果自动化将Web应用部署至本地或远程Web容器中。
2.1 部署至本地Web容器
Cargo支持两种本地部署方式,分别是standalone模式和existing模式,在standalone模式中,Cargo会从Web容器的安装目录复制一份配置到用户指定的目录,然后在此基础上部署应用,每次重新构建的时候,这个目录都会被清空,所有配置被重新生成。在existing模式中,用户需要指定现有的Web容器配置目录,然后Cargo会直接使用这些配置并将应用部署到期对应的位置。下面是配置样例:(在项目的pom.xml文件中配置):
注:如果需要让maven支持cargo的简化命令行调用,需要在maven的setting.xml配置文件中找到<pluginGroups></pluginGroups>,并在其他配置<pluginGroup>org.codehaus.cargo</pluginGroup>
2.1.1 使用standalone模式部署应用至本地web容器
1 <plugin> 2 <groupId>org.codehaus.cargo</groupId> 3 <artifactId>cargo-maven2-plugin</artifactId> 4 <version>1.4.9</version> 5 <configuration> 6 <container> 7 <containerId>tomcat7x</containerId> 8 <home>E:\apache-tomcat-7.0.37</home> 9 </container> 10 <configuration> 11 <type>standalone</type> 12 <home>${project.build.directory}/tomcat7x</home> 13 <properties> 14 <!-- cargo默认监听8080端口,可通过此设置其他端口 --> 15 <cargo.servlet.port>8082</cargo.servlet.port> 16 </properties> 17 </configuration> 18 </configuration> 19 </plugin>
配置解释:
configuraton元素:
container元素:
containerId:容器类型;
home:容器的安装目录;
configuration元素:
type:部署模式;
home:表示复制容器配置到什么位置,这里的值${project.build.directory}/tomcat7x表示构建输出目录,即target/tomcat7x子目录。
properties元素:
cargo.servlet.port:容器监听端口号;
要让Cargo启动tomcat并部署应用,只需要运行:
$mvn cargo:start
2.1.2 使用existing模式部署应用至本地web容器
<plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId> <version>1.4.9</version> <configuration> <container> <containerId>tomcat7x</containerId> <home>E:\apache-tomcat-7.0.37</home> </container> <configuration> <type>existing</type> <home>E:\apache-tomcat-7.0.37</home> </configuration> </configuration> </plugin>
2.2 部署至远程的正在运行的Web容器
<plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId> <version>1.4.9</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>admin</cargo.remote.password> <cargo.tomcat.manager.url>http://localhost:8080/manager</cargo.tomcat.manager.url> </properties> </configuration> </configuration> </plugin>
注:配置的用户需要拥有该容器的相应管理员权限,我的admin用户设置的tomcat权限为“manager-script”,设置此权限即可部署成功,不过建议再设置“manager-gui”权限,这个权限可以让admin用户登陆到tomcat的管理页面。
对于远程部署的方式,container元素的type子元素的值必须是remote,如果不显式指定,Cargo会使用默认值installed,并寻找对应的容器安装目录或者安装包,对于远程部署方式,安装目录或者安装包是不需要的。configuration的type子元素值为runtime,表示既不使用独立的容器配置,也不使用本地现有的本地配置,而是依赖于一个已运行的容器,properties元素用来声明一些容器热部署相关的配置。需要注意,这部分配置元素对于所有容器来说不是一致的,需要查阅对应的Cargo文档。
运行命令:
$mvn cargo:redeploy
既可以部署当前应用,如果容器已经部署该应用,cargo会先将其卸载,然后在重新部署。
如果想进一步了解Cargo,可访问: http://cargo.codehaus.org/Maven2+plugin