tags:

views:

121

answers:

1

I have a nant file which does the building of my project. Once the build succeeded, I will use the nant.onsuccess property to send mail. In this nant.onsuccess I will call next batch of targets to build. But I need to send the mail depending on the success or failure of these set of targets that are called from the nant.onsuccess target.

eg:

     <?xml version="1.0" encoding="utf-8" ?> 
     <project name="Build.build" default="default">
     <property name="mail.mailhost" value="x"/>
     <property name="mail.from" value="y"/>
     <property name="mail.to" value="z"/>
     <target name="default" description="Just like that">
      <echo message="Succeeded"/>
      <echo message="Succeeded"/>
      <property name="nant.onsuccess" value="suc"/>
     </target>

     <target name="suc" description="Just like that">
       <echo message="I am called"/>
       <echo message="in success part"/>
       <property name="nant.onsuccess" value="here"/>
       <call target="testing"/>
     </target>
     <target name="testing">
       <echo message="I ammmmmmmmmm"/>
       <property name="nant.onsuccess" value="here"/>
     </target>
     <target name="here">
     <echo message="I should not be called"/>
     </target>


   <target name="nant.onfailure">
  <if test="${string::get-length(mail.to) > 0}">
  <mail mailhost="${mail.mailhost}" from="${mail.from}" tolist="${mail.to}"
    subject="Test mail on ${environment::get-variable('COMPUTERNAME')}.">
    Note: this is ignored.
   </mail>
   </if>
  </target>
</project>

   The target "here" should be called depending on whether the target "testing" is succeeded or not.

Please let me know how do i achieve it.

Thanks, Priya

A: 

First thing to understand is how target dependencies can control execution. You can probably do a lot of what you need just by using dependencies. Read through the NAnt fundamentals page on targets.

Next, if you have to do a lot of logic depending on whether a particular task fails, you might check out the <trycatch> task in the NAntContrib project, which adds many useful tasks to NAnt. The trycatch task allows for a lot more flexibility than the default nant.onfailure.

Morgan