.NET General2006. 2. 20. 18:27

NAnt를 혹시 사용해보셨는지?

Ant는 원래 Java에서 사용하던 빌드 툴이다. C에서 사용하는 Make와 같은 역할을 하지만 역시 Java답게 운영체제나 시스템에 독립적인 빌드환경을 제공하기 위해서 Apache그룹에서 만든 빌드 프레임워크인데, NAnt는 SourceForge 커뮤니티에서 제작한 Ant의 .NET 버전이라고 생각하면 된다.

아래와 같은 빌드정의 파일(.build)을 XML포맷으로 만들고 그 파일이 있는 디렉토리에서 NAnt라고 Command-Line 명령을 실행하기만 하면 된다. 비주얼 스튜디오를 열지않고도 빌드를 할 수 있고, Nightly Build(Daily)도 가능하며, 서비스 형태로 몇 시간 혹은 몇 분마다 빌드를 하는 것도 가능하다. 그리고 컴파일뿐만 아니라 여러가지 부가적인 작업들도 실행을 시킬 수가 있다. 밑의 예제처럼 NUnit 테스트, FxCop을 이용한 코드 리뷰 등도 가능하다.


  1. <?xml version="1.0"?>
  2. <!- 프로젝트 이름 지정 -->
  3. <project name="AntTest" default="build">
  4. <target name="build">
  5.   <echo message="Building AntTest ...."/>
  6.   <tstamp property="build.date" pattern="yyyyMMdd" verbose="true" />
  7.   <echo message="{build.date}"/>
  8.    <!-- 프레임워크 버전을 지정 -->
  9.    <available type="FrameworkSDK" resource="net-1.1" property="net-1.1.frameworksdk.present" />
  10.    <!-- 빌드할 솔루션을 지정. 이 솔루션을 컴파일하게 된다 -->
  11.    <solution configuration="debug" solutionfile="AntTestSln\AntTestSln.sln">
  12.    <!-- 웹 프로젝트는 웹경로를 지정해야 한다-->
  13.    <webmap>
  14.    <map url="http://localhost/AntTestWeb/AntTestWeb.csproj" path="..\WEB\AntTestWeb.csproj" />
  15.    </webmap>
  16.    </solution>
  17.     <!-- NUnit 을 사용해서 유닛테스트를 수행한다. 물론 NUnit 테스트용으로 만든 어셈블리에 한해서 -->
  18.     <nunit2>
  19.     <formatter type="Xml" usefile="true" extension=".xml" outputdir="TEST\results" />
  20.     <test assemblyname="TEST\bin\debug\TEST.dll"/>
  21.     </nunit2>
  22.     <!-- FxCop 으로 코드리뷰를 수행한다 -->
  23.     <exec program="FxCopCmd" commandline="/file:COM\bin\Debug\com.dll /out:review\review.xml" />
  24.     <!-- NUnit Report를 사용해서 NUnit 유닛테스트 결과를 리포트에 기록한다 -->
  25.     <nunit2report out="TEST\results\NUnitReport(No-Frame).html" >
  26.     <fileset>
  27.         <includes name="TEST\results\TEST.dll-results.xml" />
  28.     </fileset>
  29.     <summaries>
  30.         <includes name="TEST\bin\debug\TEST.xml" />
  31.     </summaries>
  32.     </nunit2report>
  33.     <mail
  34.               from="buildmaster@project.com"
  35.               tolist="buildmaster@project.com"
  36.               subject="{build.date} 빌드가 완료되었습니다"
  37.               mailhost="mail.project.com">
  38.     </mail>
  39. </target>
  40. </project>
 
Posted by kkongchi