最近在学习TDD开发,一直用Delphi7开发程序(各位大侠不要笑话我),配合DUNIT开发(推荐用DUNITWizard插件,支持生成test程序在Console和GUI下运行),通过网上查找内容,发现这篇网页和PDF文档介绍的内容比较适用我,下载Want(下载0.3.3,最新2.02支持的脚本xml,是一种Script语言),WANT是像ant的构建工具,基本上语法与ant一致,但是增加了dcc,dunit几个与delphi有关的命令。自己研究下,编写了一个支持我项目中的配置文件build.xml。我的目录结构和上面网页的类似,不过约有调整。
Project
— |–src(应用程序源码)
|–test(测试程序源码)
|–scratch(中间文件)
|–dcu(生成的编译文件)
|–deploy(执行代码和构建文件build.xml)
|–doc(文档)
|–lib(开发库)
|–want
配置文件如下:
- <projectname="testcommonprj"basedir="."default="compile">
- <propertyname="src.dir"value="${basedir}/src"/>
- <propertyname="test.dir"value="${basedir}/test"/>
- <propertyname="deploy.dir"value="${basedir}/deploy"/>
- <propertyname="dcu.dir"value="${basedir}/scratch/dcu"/>
- <propertyname="delphi"value="D:/ProgramFiles/Borland/Delphi7"/>
- <propertyname="components"value="E:/Source/Delphi/Component"/>
- <propertyname="test.app"value="testcommonprjstructTests"/>
- <propertyname="main.app"value="testcommonprjstruct"/>
- <propertyname="mainexe.name"value="${deploy}/${main.app}.exe"/>
- <propertyname="maintestexe.name"value="${deploy}/${test.app}.exe"/>
- <patternsetid="componentsdir">
- <includename="${components}/dunit_v9.2.0/src"/>
- </patternset>
- <patternsetid="main.src">
- <includename="${src.dir}/view"/>
- <includename="${src.dir}/common"/>
- </patternset>
- <patternsetid="test.src"refid="main.src">
- <includename="${test.dir}/**"/>
- </patternset>
- <targetname="clean">
- <echomessage="deletedcu"/>
- <deletedir="${dcu.dir}">
- <includename="**"/>
- </delete>
- <echomessage="deleteexe"/>
- <deletedir="${deploy.dir}">
- <includename="*.exe"/>
- </delete>
- </target>
- <targetname="prepare">
- <mkdirdir="${dcu.dir}"></mkdir>
- <mkdirdir="${deploy.dir}"></mkdir>
- </target>
- <targetname="compile"depends="clean,compiletest,compileapp">
- </target>
- <targetname="compileapp">
- <echomessage="build${main.app}"/>
- <dccbasedir="${src.dir}"source="${main.app}.dpr">
- <buildvalue="True"/>
- <exeoutputpath="${deploy.dir}"/>
- <dcuoutputpath="${dcu.dir}"/>
- <warningsvalue="True"/>
- <mapvalue="none"/>
- <consolevalue="False"/>
- <unitPathrefid="main.src"/>
- <resourcePathrefid="main.src"/>
- </dcc>
- </target>
- <targetname="compiletest">
- <echomessage="build${test.app}"/>
- <dccbasedir="${test.dir}"source="${test.app}.dpr">
- <buildvalue="True"/>
- <exeoutputpath="${deploy.dir}"/>
- <dcuoutputpath="${dcu.dir}"/>
- <warningsvalue="True"/>
- <mapvalue="none"/>
- <consolevalue="True"/>
- <unitPathrefid="test.src"/>
- <includepathrefid="componentsdir"/>
- <resourcePathrefid="test.src"/>
- </dcc>
- </target>
- <targetname="runtest"depends="clean,compiletest">
- <echomessage="runtest${maintestexe.name}"/>
- <execexecutable="${maintestexe.name}"/>
- </target>
- <targetname="runmain"depends="clean,compileapp">
- <echomessage="runtest${mainexe.name}"/>
- <execexecutable="${mainexe.name}"/>
- </target>
- </project>