没有刚工作的时候写的那个漂亮,不过总算完成一样的事情了。
能够在本地分资源种类打包,然后上传到服务器,解压,重启服务器。
<project name="eCourse" default="deploy">
<property name="prj.base.dir" location="../../..">
</property>
<property name="keyfile.path" location="/Users/wangds/.ssh/id_rsa">
</property>
<target name="pkgHome">
<zip basedir="${prj.base.dir}/src/main/apphome" destfile="${prj.base.dir}/target/apphome.zip">
</zip>
</target>
<target name="deployHome" depends="pkgHome">
<scp keyfile="${keyfile.path}" file="${prj.base.dir}/target/apphome.zip" remoteTodir="root@wangds.net:/opt/apphome/ecourse">
</scp>
<sshexec command="mkdir -p /opt/apphome/ecourse/backup" host="wangds.net" username="root" keyfile="${keyfile.path}" />
<sshexec command="cp /opt/apphome/ecourse/apphome.zip /opt/apphome/ecourse/backup/apphome_`date +%Y%m%d%H%M`.zip" host="wangds.net" username="root" keyfile="${keyfile.path}" />
<sshexec command="unzip -uo /opt/apphome/ecourse/apphome.zip -d /opt/apphome/ecourse" host="wangds.net" username="root" keyfile="${keyfile.path}" />
<sshexec command="rm -rf /opt/apphome/ecourse/apphome.zip" host="wangds.net" username="root" keyfile="${keyfile.path}" />
</target>
<target name="pkgWarPatch">
<exec dir="${prj.base.dir}" executable="bash" append="no">
<arg line="-c 'find ./target/eCourse -newer ecourse.tm -type f -exec dirname ./patch/{} \;|xargs mkdir -p '" />
</exec>
<exec dir="${prj.base.dir}" executable="bash" append="no">
<arg line="-c 'find ./target/eCourse -newer ecourse.tm -type f -exec cp {} ./patch/{} \;'"/>
</exec>
<exec dir="${prj.base.dir}/patch/target/eCourse" executable="bash" append="no">
<arg line="-c 'jar -cvf ../../eCourse.war ./WEB-INF'"/>
</exec>
<exec dir="${prj.base.dir}/patch/target/" executable="bash" append="no">
<arg line="-c 'rm -rf ./eCourse/WEB-INF'"/>
</exec>
<exec dir="${prj.base.dir}/patch/target/eCourse" executable="bash" append="no">
<arg line="-c 'tar -cvzf ../../eCourse.tgz .'"/>
</exec>
</target>
<target name="deployWarPatch" depends="pkgWarPatch">
<scp keyfile="${keyfile.path}" file="${prj.base.dir}/patch/eCourse.war" remoteTodir="root@wangds.net:/opt/apphome/ecourse"/>
<scp keyfile="${keyfile.path}" file="${prj.base.dir}/patch/eCourse.tgz" remoteTodir="root@wangds.net:/opt/apphome/ecourse"/>
<sshexec command="mkdir -p /opt/apphome/ecourse/backup" host="wangds.net" username="root" keyfile="${keyfile.path}" />
<sshexec command="cp /opt/apphome/ecourse/eCourse.war /opt/apphome/ecourse/backup/eCourse_`date +%Y%m%d%H%M`.war" host="wangds.net" username="root" keyfile="${keyfile.path}" />
<sshexec command="cp /opt/apphome/ecourse/eCourse.tgz /opt/apphome/ecourse/backup/eCourse_`date +%Y%m%d%H%M`.tgz" host="wangds.net" username="root" keyfile="${keyfile.path}" />
<sshexec command="tar -xvzf /opt/apphome/ecourse/eCourse.tgz -C /opt/apphome/ecourse/www" host="wangds.net" username="root" keyfile="${keyfile.path}" />
<sshexec command="unzip -uo /opt/apphome/ecourse/eCourse.war -d /var/lib/tomcat6/webapps/eCourse/" host="wangds.net" username="root" keyfile="${keyfile.path}" />
<sshexec command="rm -rf /opt/apphome/ecourse/eCourse.war" host="wangds.net" username="root" keyfile="${keyfile.path}" />
<sshexec command="rm -rf /opt/apphome/ecourse/eCourse.tgz" host="wangds.net" username="root" keyfile="${keyfile.path}" />
</target>
<target name="clean">
<exec dir="${prj.base.dir}" executable="bash" append="no">
<arg line="-c 'echo abc>ecourse.tm'"/>
</exec>
<delete dir="${prj.base.dir}/patch"></delete>
</target>
<target name="deploy" depends="deployHome,deployWarPatch,clean">
<sshexec command="service tomcat6 restart" host="wangds.net" username="root" keyfile="${keyfile.path}" />
</target>
</project>