最近本人研究了cargo远程部署war包的方式,采用的是Ant脚本,选型的应用服务器则是Wildfly的CR1版本,废话不多说,来看一下build.xml文件的编写方式:
1)、本地部署
<?xml version="1.0"?>
<project name="cargo_ant_demo01" default="deploy" basedir=".">
<property name="cargolib.dir" value="${basedir}\jar"/>
<property name="cargo-uberjar" value="${cargolib.dir}\cargo-core-uberjar-1.4.6.jar"/>
<property name="cargo-antjar" value="${cargolib.dir}\cargo-ant-1.4.6.jar"/>
<property name="common-discovery" value="${cargolib.dir}\commons-discovery-0.4.jar"/>
<property name="common-logging" value="${cargolib.dir}\commons-logging-1.1.1.jar"/>
<property name="jboss.home" value="D:\server\wildfly\wildfly-8.0.0.CR1-cargo01"/>
<property name="mywar" value="D:\Maven_Cargo\demo\nio_demo.war"/>
<taskdef resource="cargo.tasks">
<classpath>
<pathelement location="${cargo-uberjar}"/>
<pathelement location="${cargo-antjar}"/>
<pathelement location="${common-discovery}"/>
<pathelement location="${common-logging}"/>
</classpath>
</taskdef>
<target name="cargostart">
<echo message="Starting Cargo..."/>
<echo message="Using jboss.home = ${jboss.home} "/>
<echo message="Using war = ${mywar}"/>
<echo message="Jars used = ${cargo-uberjar} , ${cargo-antjar}"/>
<cargo containerId="wildfly8x" home="${jboss.home}" action="run">
<configuration>
<property name="cargo.servlet.port" value="8080"/>
<property name="cargo.logging" value="high"/>
<deployable type="war" file="${mywar}"/>
<!--<deployable type="war" file="${war.ss}"/> -->
</configuration>
</cargo>
</target>
<target name="deploy" depends="cargostart"/>
</project>
这里需要注意的也就是官网所说的两个必须的jar包(红色标出的)要添加到Ant的classpath里面,参考:http://cargo.codehaus.org/Ant+support ,后面两个commons的相关的包是本人在部署项目,执行ant命令(Ant下载:
http://mirrors.hust.edu.cn/apache//ant/binaries/apache-ant-1.9.3-bin.zip
2)、远程部署
<?xml version="1.0"?>
<project name="cargo_ant_demo01" default="deploy" basedir=".">
<property name="cargolib.dir" value="${basedir}\jar"/>
<property name="cargo-uberjar" value="${cargolib.dir}\cargo-core-uberjar-1.4.6.jar"/>
<property name="cargo-antjar" value="${cargolib.dir}\cargo-ant-1.4.6.jar"/>
<property name="common-discovery" value="${cargolib.dir}\commons-discovery-0.4.jar"/>
<property name="common-logging" value="${cargolib.dir}\commons-logging-1.1.1.jar"/>
<property name="jboss-cli" value="${cargolib.dir}\jboss-cli-client.jar"/>
<property name="mywar" value="D:\Maven_Cargo\demo\cargodemo.war"/>
<taskdef resource="cargo.tasks">
<classpath>
<pathelement location="${cargo-uberjar}"/>
<pathelement location="${cargo-antjar}"/>
<pathelement location="${common-discovery}"/>
<pathelement location="${common-logging}"/>
<pathelement location="${jboss-cli}"/>
</classpath>
</taskdef>
<target name="deploy">
<echo message="Starting Cargo..."/>
<echo message="Using war = ${mywar}"/>
<echo message="Jars used = ${cargo-uberjar} , ${cargo-antjar}"/>
<cargo containerId="wildfly8x" action="deploy" type="remote">
<configuration type="runtime">
<property name="cargo.hostname" value="10.19.220.XX"/>
<!--<property name="cargo.jboss.management-http.port" value="9990"/>-->
<!--<property name="cargo.servlet.port" value="8080"/> -->
<property name="cargo.remote.username" value="admin"/>
<property name="cargo.remote.password" value=">
<deployable type="war" file="${mywar}"/>
<!--<deployable type="war" file="${war.ss}"/> -->
</configuration>
</cargo>
<cargo containerId="wildfly8x" action="deploy" type="remote">
<configuration type="runtime">
<property name="cargo.hostname" value="192.168.88.128"/>
<property name="cargo.remote.username" value="admin"/>
<property name="cargo.remote.password" value=">
<deployable type="war" file="${mywar}"/>
</configuration>
</cargo>
</target>
<target name="undeploy">
<cargo containerId="wildfly8x" action="undeploy" type="remote">
<configuration type="runtime">
<property name="cargo.hostname" value="10.19.220.XX"/>
<property name="cargo.remote.username" value="admin"/>
<property name="cargo.remote.password" value=">
<deployable type="war" file="${mywar}"/>
</configuration>
</cargo>
<cargo containerId="wildfly8x" action="undeploy" type="remote">
<configuration type="runtime">
<property name="cargo.hostname" value="192.168.88.128"/>
<property name="cargo.remote.username" value="admin"/>
<property name="cargo.remote.password" value=">
<deployable type="war" file="${mywar}"/>
</configuration>
</cargo>
</target>
<!--<target name="deploy" depends="cargostart"/>-->
</project>
这里需要注意的地方就是相关客户端连接容器的jar包要添加进来,否则会出现识别不了containerId的错误,如上红色标出的jar依赖。
当然在安装好Ant,配置好环境变量之后,我们通过dos可以进入到build.xml文件所在目录,执行ant+Target任务名的方式执行ant命令,默认读取build.xml文件,当然也可以通过ant的如下命令指定读取不同的xml文件:
ant -buildfile XX.xml deploy
上面就是读取某一个ant文件,执行里面target名为deploy的任务。
远程部署的应用服务器必须是启起来的,而且也要添加管理员的用户身份。
如下是我在Eclipse里面编写项目的结构: