毫无疑问,ant在文件操作、命令执行、服务器操作等方面相比maven有绝对的优势。本文特此整理了ant一些常用命令,方便日后查阅和使用。
加载属性(property)
注意:xml中定义的属性,先定义的不会被后面的覆盖。属性文件中定义的属性,后者会覆盖前者。
定义一个属性
<property name="akey" value="avalue" />
加载属性文件
<property file="xxxxxx.properties" />
或
<loadproperties srcFile="xxxxx.properties" />
引入操作系统环境变量,后续可通过${env.JAVA_HOME}等方式使用
注意:在windows中修改了了环境变量,可能需要注销并重新登录才能被ant识别
<property environment="env" />
引入一个属性。注意,可以在任何地方引入,包括属性文件中
${属性名}
当条件成立时,会进行赋值操作
<condition property="akey" value="avalue">
<isset property="keyexists" />
</condition>
任务
引入外部build.xml,其中的property和target等也会被引入
<import file="build.xml" />
定义一个task,并制定它依赖的task
<target name="clean" depends="a,b,c"></target>
引入第三方的task定义
<taskdef resource="com/xxxxx/xxxxxx/xxxxxx.properties" />
echo
<echo message="hehe" />
扔出一个异常
<fail message="hehe" />
文件/目录操作
删除文件或目录,注意:会连同目录本身一起删除
<delete includeemptydirs="true" failonerror="false" dir="./bin" ></delete>
<delete includeemptydirs="true" failonerror="false"
file="./xxxx.jar" ></delete>
清空某目录
<delete includeemptydirs="true">
<fileset dir="./bin">
<include name="**/*"/>
</fileset>
</delete>
重命名或移动文件
<move file="${p1}/target/${p1oldname}" tofile="${p1}/target/${p1name}"/>
在远程机器执行ssh命令
执行远程ssh命令
<sshexec host="${address}" username="${user}" password="${password}" trust="true"
command="pkill java" />
使用scp进行文件上传操作
<scp todir="${user}:${password}@${address}:/root/" trust="true">
<fileset dir="./target" includes="*.jar"/>
</scp>
执行cmd命令
执行cmd命令
注意:如果命令中包含双引号,需要使用"来进行转义(参考html)
<exec dir="." executable="cmd.exe" >
<arg line="/c notepad.exe" />
</exec>
数据库操作
执行sql语句
注意:需要将对应的数据库驱动复制到${ANT_HOME}/lib下
<sql
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql:xxxxxxxxx"
userid="root"
password="xxxxxxx" >
insert into xxxxx values(xxx,xxx,xx);
</sql>