由于公司配置的垃圾台式机,根本就没法开发,开一个sts,跑一个内嵌的tomcat就卡出翔,测试每次想在我机器上测试,所以弄了下maven下使用Cargo实现自动化部署,这样就可以把本地的应用部署到远程服务器上去,省的垃圾电脑卡出翔。
先在settings.xml里面的pluginGroups节点增加
tomcat7x
admin
password
1.1 standalone模式
在standalone模式,Cargo会从Web容器的安装目录复制一份配置到用户指定的目录,然后在此基础上部署应用,每次重新构建的时候,这个目录都会被清空,所有配置被重新生成
org.codehaus.cargo
cargo-maven2-plugin
1.4.9
tomcat7x
/usr/local/devtools/apache-tomcat-7.0.55
standalone
${project.build.directory}/tomcat7x
8088
1.2 existing模式
在existing模式下,用户需要指定现有的web容器配置目录,然后Cargo会直接使用这些配置并将应用部署到其对应的位置
org.codehaus.cargo
cargo-maven2-plugin
1.4.9
tomcat7x
/usr/local/devtools/apache-tomcat-7.0.55
existing
/usr/local/devtools/apache-tomcat-7.0.55
2.部署到远程Web容器
这里注意在远程部署模式下,container元素的type子元素的值必须为remote,如果不指定,Cargo会默认使用installed,并寻找对应的容器安装目录或者安装包,一般我们远程部署的服务器上都有设定好的web容器了,并不需要再区安装。
pom.xml
org.apache.tomcat.maven
tomcat7-maven-plugin
2.2
http://localhost:8080/manager/text
UTF-8
tomcat7x
admin
password
/${project.artifactId}
org.codehaus.cargo
cargo-maven2-plugin
1.4.9
tomcat7x
remote
runtime
http://localhost:8080/manager/text
admin
password
io.steveguoshao
webapp
war
/${project.artifactId}
http://localhost:8080/webapp
60000
verify-deployer
install
deployer-redeploy
clean-deployer
clean
deployer-undeploy
在tomcat7的conf/tomcat-users.xml中增加角色和用户, 不然会报403,没法访问
http://localhost:8080/manager/text
而tomcat6是
http://localhost:8080/manager/html
配置好之后就可以运行mvn cargo:redeploy 来部署应用了(必须保证tomcat是running状态,否则没法部署),如果容器中已经部署的当前应用,Cargo会先卸载掉原来的应用,然后再重新部署。
为什么在配置了
deployer-undeploy
的时候,明明刚刚install的时候已经生成了,但是却每次clean都报找不到target目录下war包呢?
3.Cargo插件中各个命令的之间的异同
Goals |
Description |
---|---|
|
Start a container. That goal will:
Note: A container that's started with |
|
Start a container and wait for the user to press
|
|
Stop a container. |
|
Stop and start again a container. If the container was not running before calling cargo:restart , it will simply be started. |
|
Create the configuration for a local container, without starting it. Note that the |
|
Package the local container. |
cargo:daemon-start |
Start a container via the daemon. Read more on: Cargo Daemon Note: The |
cargo:daemon-stop |
Stop a container via the daemon. Read more on: Cargo Daemon |
|
Deploy a deployable to a running container. Note: The |
|
Undeploy a deployable from a running container. |
|
Start a deployable already installed in a running container. |
|
Stop a deployed deployable without undeploying it. |
|
Undeploy and deploy again a deployable. If the deployable was not deployed before calling |
|
Merge several WAR files into one. |
|
Installs a container distribution on the file system. Note that the |
|
Get help (list of available goals, available options, etc.). |
从上面可以看出,cargo:start于cargo:run的不同之处了吧?cargo:start的生命周期依赖于maven实例的生命周期,也就是说,maven构建成功或者失败之后,cargo插件的生命周期也自动停止了;而cargo:run不同,不管maven是否构建成功或者失败,都必须手工去按Ctrl + C来停止。
参考资料:
1.徐文斌的《Maven实战》
2.http://cargo.codehaus.org/Maven2+Plugin+Reference+Guide
3.http://cargo.codehaus.org/Maven2+plugin
4.http://cargo.codehaus.org/Deploying+to+a+running+container