以下ANT脚本是项目中需要的,主要是完成扫描,拷贝,编译以及运行
<?xml version="1.0" encoding="UTF-8"?>
<project name="测试脚本" default="run" basedir="." >
<target name="scan">
<echo message="正在扫描JAVA文件..." />
<exec executable="cmd" failοnerrοr="true">
<arg line="/c java -jar Scanner.jar" />
</exec>
</target>
<target name="moveAJ" depends="scan">
<echo message="正在拷贝Aspectj文件..." />
<!--todir是确定好的, dir也是确定的-->
<copy todir="${basedir}/resource/code/com/wander/aspectj">
<fileset dir="${basedir}/aspectjGen">
<include name="*.aj"/>
</fileset>
</copy>
</target>
<target name="compileAJ" depends="moveAJ">
<echo message="正在编译Aspectj文件..." />
<!-- -d选项可以修改, -sourceroots 也可以修改-->
<exec executable="cmd" failοnerrοr="true">
<arg value="/c ajc -classpath "%ASPECTJ_HOME%"/lib/aspectjrt.jar -sourceroots resource/code/ -d funny -source 1.5" />
</exec>
</target>
<target name="run" depends="compileAJ">
<exec executable="showMainClass.bat" failοnerrοr="true">
</exec>
<input message="请输入运行的主类(下标从0开始)"
addproperty="run.index"
/>
<exec executable="runMainClass.bat" failοnerrοr="true">
<arg value="${run.index}" />
</exec>
</target>
</project>
需要注意的是,使用CMD的命令时,
<arg line="xxxxx" />
xxxxx中是不能含有空格等分隔字符的,如果需要有这样的字符,用这样的的形式
<arg value="xxxxx" />
此外,这个ANT脚本中还用到showMainClass.bat和runMainClass.bat
@echo off
echo 一共有一下几个启动类:
type Log\MainMethod.log
和@echo off
set skipNum=%1
if %skipNum%==0 (
for /f "delims= " %%i in (Log\MainMethod.log) do (
set MainClass=%%i
goto end)
) else (
for /f "delims= skip=%skipNum%" %%i in (Log\MainMethod.log) do (
set MainClass=%%i
goto end)
)
:end
echo 准备启动主类:%MainClass%
cd funny
java %MainClass%
cd ..