javac
Ant的javac任务用于实现编译Java程序的功能。下面来看一个简单的例子:
首先我们建立名为antstudy的Java工程,建立src目录为源代码目录,在src目录下建立HelloWorld.java这个类文件。该类文件的内容如下:
public class HelloWorld {public static void main(String[] args) {System.out.println("Hello,Amigo");} }
同时在antstudy工程的根目录下建立build.xml文件,在该文件中编译src目录下的java文件,并将编译后的class文件放入build/classes目录中,在编译前,需清除classes目录,该文件的内容如下:
<?xml version="1.0"?>
<!- javac .java编译为.class -->
<project name="javacTest" default="compile" basedir=".">
<target name="clean">
<delete dir="build"/>
</target>
<target name="compile" depends="clean">
<mkdir dir="build/classes"/>
<javac srcdir="src" destdir="build/classes"/>
</target>
</project>
java 与 jar
<?xml version="1.0"?>
<!- java运行 与 jar打包 -->
<project name="javaTest" default="jar" basedir=".">
<target name="clean">
<delete dir="build"/>
</target>
<target name="compile" depends="clean">
<mkdir dir="build/classes"/>
<javac srcdir="src" destdir="build/classes"/>
</target>
<target name="run" depends="compile">
<java classname="HelloWorld">
<classpath>
<pathelement path="build/classes"/>
</classpath>
</java>
</target>
<target name="jar" depends="run">
<jar destfile="helloworld.jar" basedir="build/classes">
<manifest>
<attribute name="Main-class" value="HelloWorld"/>
</manifest>
</jar>
</target>
</project>
系统命令
在target标签内嵌入exec标签即可执行系统命令。
exec标签内的arg标签有两个常用参数。
values 是一个命令参数。如果参数中有空格,但又想将它作为单独一个值,则使用此属性。
line 表示用空格分隔的多个参数列表。
exec标签内的arg标签有两个常用参数。
values 是一个命令参数。如果参数中有空格,但又想将它作为单独一个值,则使用此属性。
line 表示用空格分隔的多个参数列表。
windows
Windows必须加 /c,。<?xml version="1.0" ?>
<project name="shell" default="test_cmd" basedir=".">
<target name="test_cmd">
<echo>cmd test</echo>
<exec executable="cmd">
<arg line="/c echo %date%"/>
</exec>
<exec executable="cmd">
<arg line="/c dir"/>
</exec>
</target>
</project>
效果见图。
<?xml version="1.0" encoding="UTF-8"?>
<!-- 调用d:\yichu\1.bat 因为1.bat使用了相对路径,而ant又实现不了cd命令,所以ant自己拼凑一个bat >为大于号的转义符 -->
<project name="deploy" default="run">
<target name="run" >
<exec executable="cmd" description="试验 cd 用法">
<arg value="/c echo cd d:\yichu\ > temp.bat"/>
</exec>
<exec executable="cmd" description="试验 cd 用法">
<arg value="/c echo call 1.bat >> temp.bat "/>
</exec>
<exec executable="cmd" description="试验 cd 用法">
<arg value="/c temp.bat"/>
</exec>
</target>
</project>
<exec dir="c:\cefclient_final\" executable="c:\cefclient_final\cefsimple.exe" spawn="true"/>
上面一行的意思是在dir目录下执行executable程序,不管它什么时候结束,此行exec语句都退出,相当于异步调用。
linux
linux必须加 –c 。