Archive

Posts Tagged ‘Nant’

Build Automation (NAnt + MSBuild)

November 20, 2009 1 comment

NAnt merupakan build automation tools yang open source dan merupakan porting dari java. NAnt dapat di download di NAnt Homepage. Saya biasanya menggunakan NAnt standalone sebagai automation tools. Sehingga IDE Build pada Visual Studio tidak ada fungsinya lagi sama sekali. VS (Visual Studio) hanya sebagai text editor saja dengan kekuatan Intellisense nya. Sayang sekali ya.. Padahal di VS juga kita menambahkan reference terhadap library dan dependency. Di NAnt juga kita melakukan hal yang sama secara manual sehingga ada pekerjaan yang redundant dan membosankan.

Seringkali juga saya menambahkan reference terhadap library di Visual Studio tetapi lupa menambahkannya di NAnt build file. Akhirnya compilasi pun failed. Memang masalah itu sangat mudah diatasi tetapi tetap saja ada duplikasi pekerjaan.

Akhirnya permasalahaan tersebut sedikit memiliki jalan keluar. Ternyata dibalik Build VS tersebut merupakan pekerjaan dari MSBuild. MSBuild mengeksekusi file csproj yang ada pada project kita. File tersebut berisikan XML file yg hampir sama tujuannya dengan file NAnt. Reference tersebut juga telah di definisikan di sana.

...
  <ItemGroup>
    <Reference Include="antlr.runtime, Version=2.7.6.2, Culture=neutral, PublicKeyToken=65e474d141e25e07, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\..\external-bin\nomerge\antlr.runtime.dll</HintPath>
    </Reference>
    <Reference Include="Antlr3.Runtime, Version=3.1.0.39271, Culture=neutral, PublicKeyToken=3a9cab8f8d22bfb7, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\..\external-bin\nomerge\Antlr3.Runtime.dll</HintPath>
    </Reference>
    <Reference Include="Common.Logging, Version=1.2.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\..\external-bin\nomerge\Common.Logging.dll</HintPath>
    </Reference>
.....
  <ItemGroup>
    <ProjectReference Include="..\Messages\Messages.csproj">
      <Project>{20F613ED-C871-477C-B1E4-48B96CACF794}</Project>
      <Name>Messages</Name>
    </ProjectReference>
  </ItemGroup>
...

Saya kemudian mendapatkan contoh yang sangat baik untuk memanfaatkan MSBuild dengan NAnt. Contoh tersebut saya dapat dari NServiceBus. Untuk build automation nya NServiceBus mengkombinasikan NAnt dan MSBuild. Silahkan download source code NServiceBus dan pada
folder trunk anda akan menemukan file nant.build. File ini merupakan build file untuk NAnt.
Read more…

Advertisement
Categories: Continous Integration Tags: ,