使用Ant对程序打包并上传服务器
在开发过程中,常常需要同步更新服务器上的程序。如果每次都将程序重新打包,然后再登陆服务器进行上传,这样过程显得比较繁琐,特别是更新步骤较多时,很容易出错。我们可以通过Ant来实现打包和上传过程,如果是与Eclipse集成的,那整个过程将更加简化。
软件版本:apache-ant-1.7.0
ant脚本其实整个过程比较简单,主要用到两个task,jar和scp。其中,scp是ant的扩展task,需要第三方的库jsch的支持。可以到http://www.jcraft.com/jsch/index.html进行下载,目前的最新版本为jsch-0.1.34.jar。下载以后,将其放在Ant_Home/lib即可。注意,如果是在Eclipse中使用Ant,需要重新加载Ant_Home,确定jsch-0.1.34.jar被导入到Eclipse中才能正常使用scp。Eclipse配置如图所示
具体build.xml如下:
xml代码1.<?xmlversion="1.0"encoding="GBK"?>
2.<projectname="remote"default="update"basedir=".">
3.<propertyname="src.dir"value="${basedir}\src"/>
4.<propertyname="class.dir"value="${basedir}\bin"/>
5.<propertyname="lib.dir"value="${basedir}\lib"/>
6.<propertyname="conf.dir"value="${basedir}\conf"/>
7.<propertyname="package.dir"value="${basedir}\dist"/>
8.<propertyname="programName"value="Server"/>
9.
10.<propertyname="address"value="192.168.0.22:/home/Navy/"/>
11.<propertyname="user"value="root"/>
12.<propertyname="password"value="123"/>
13.
14.<targetname="init"description="初始化环境">
15.<echomessage="初始化目录"/>
16.<deletedir="${package.dir}"/>
17.<mkdirdir="${package.dir}"/>
18.</target>
19.
20.<targetname="package"depends="init"description="打包">
21.<echomessage="将class打包,输出到${package.dir}"/>
22.<jarbasedir="${class.dir}"jarfile="${package.dir}\${programName}.jar"/>
23.</target>
24.
25.<targetname="update"depends="package"description="上传">
26.<echomessage="将jar上传服务器"/>
27.<scpfile="${package.dir}\${programName}.jar"todir="${user}:${password}@${address}"
28.trust="true"verbose="true"/>
29.<echomessage="上传完毕"/>
30.</target>
31.
32.</project>
其中,scp任务的trust属性必须设置为true,否则会出现如下错误:
com.jcraft.jsch.JSchException:rejectHostKey:192.168.0.22