利用ant执行dos2unix

在实际的java web开发中,我们往往需要用到Ant打包发布,而我目前所在的项目组却无法完全由Ant打包,原因在于我们需要对某些配置文件和脚本进行转码并赋权限,所有只好利用Ant编译好后再手动的将包传到linux服务器上进行dos2unix再chmod.

今天研究了一下Ant,使用其中的replaceregexp任务将windows平台的\r\n替换为\n,代码如下:

<target name="dos2unix" description="dos2unix">
<replaceregexp match=" " replace=" " flags="g" byline="false">
<fileset dir="${base}">
<include name="bin/**" />
<include name="config/**" />
</fileset>
</replaceregexp>
</target>

如下赋权限的代码目前没有环境测试,不知可不可用,测试后我会再补充说明:
<target name="chmod" depends="dos2unix"  description="chmod 777">
<chmod dir="${base}/bin" perm="ugo+rwx"/>
</target>

以上的赋权限只能在unix平台上进行,所以如果要在windows上赋权限是一件很麻烦的事情,不过还好,ant提供了zip和telnet,ftp的task,所以我们只要把在windows上打好的包用ftp方式放到服务器上再解压,执行chmod命令在压缩成gz包,最后将这个gz包ftp到本机就好了,主要代码如下:

<!--默认打包服务器-->
<property name="server_address" value="10.10.10.10" />
<!--登陆用户-->
<property name="login_name" value="root" />
<!--登陆用户秘码-->
<property name="login_pwd" value="password" />

...

<!-- 如果无服务器可以直接在本地打zip包 -->
<target name="zipFile" depends="delete">
<delete file="${base}/${ins_package}.zip" />
<zip zipfile="${base}/${ins_package}.zip" basedir="${base}/${package_temp}" includes="**" />
</target>

<!-- 初始化服务器目录 -->
<target name="initServer" depends="zipFile">
<telnet userid="${login_name}" password="${login_pwd}" server="${server_address}">
<read>${read_rsp}</read>
<write echo="true">rm -rf ${package_name}</write>
<read>${read_rsp}</read>
<write echo="true">mkdir ${package_name}</write>
<read>${read_rsp}</read>
<write echo="true">cd ${package_name}</write>
<read>${read_rsp}</read>
</telnet>
</target>
<!-- 将本地zip文件ftp到服务器指定目录下 -->
<target name="ftpServer" depends="initServer">
<ftp server="${server_address}" remotedir="${package_name}" userid="${login_name}" password="${login_pwd}">
<fileset file="${base}/${ins_package}.zip" />
</ftp>
</target>

<!-- 在服务器指定目录下对工程进行dos2unix,chmod,以及打包 -->
<target name="buildGzip" depends="ftpServer">
<telnet userid="${login_name}" password="${login_pwd}" server="${server_address}">
<read>${read_rsp}</read>
<write echo="true">cd ${package_name}</write>
<read>${read_rsp}</read>
<write echo="true">unzip ${ins_package}.zip</write>
<read>${read_rsp}</read>
<write echo="true">rm -rf ${ins_package}.zip</write>
<read>${read_rsp}</read>
<write echo="true">cd bin</write>
<read>${read_rsp}</read>
<write echo="true">dos2unix *</write>
<read>${read_rsp}</read>
<write echo="true">chmod 777 *</write>
<read>${read_rsp}</read>
<write echo="true">cd ../config</write>
<read>${read_rsp}</read>
<write echo="true">dos2unix *</write>
<read>${read_rsp}</read>
<write echo="true">chmod 777 *</write>
<read>${read_rsp}</read>
<write echo="true">cd ../</write>
<read>${read_rsp}</read>
<write echo="true">tar -zcvf ${ins_package}.tar.gz ./*</write>
<read>${read_rsp}</read>
</telnet>
</target>

<!-- 将服务器指定目录下打好的gz包下载到本地 -->
<target name="downloadLocation" depends="buildGzip">
<delete file="${base}/${ins_package}.tar.gz" />
<ftp action="get" server="${server_address}" userid="${login_name}" password="${login_pwd}" remotedir="${package_name}">
<fileset file="${ins_package}.tar.gz" />
</ftp>
<!-- 删除本地临时zip包 -->
<delete file="${base}/${ins_package}.zip" />
</target>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值