Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using ant to detect os and set property

Tags:

ant

I want to set a property in an ant task differently by os type.

The property is a directory, in windows i want it to be "c:\flag" in unix/linux "/opt/flag".

My current script only works when i run it with the default target, but why ?

    <target name="checksw_path" depends="if_windows, if_unix"/>  <target name="checkos">     <condition property="isWindows">         <os family="windows" />     </condition>      <condition property="isLinux">         <os family="unix" />     </condition> </target>  <target name="if_windows" depends="checkos" if="isWindows">    <property name="sw.root" value="c:\flag" />     <echo message="${sw.root}"/> </target>  <target name="if_unix" depends="checkos" if="isLinux">     <property name="sw.root" value="/opt/flag" />     <echo message="${sw.root}"/> </target> 

In all my ant targets i've added a "depends=checksw_path".

If i run the default target in windows i've got correctly "c:\flag" but if i run a non default target i've got that the debug goes in the if_windows but the instruction " " does not set the property that remains /opt/flag. I'm using ant 1.7.1.

like image 223
egesuato Avatar asked Jan 17 '09 11:01

egesuato


People also ask

What is Ant Basedir?

The 'basedir' is the base directory from which any relative directories used within the Ant build file are referenced from. If this is omitted the parent directory of the build file will be used.


1 Answers

Move your condition out of the <target />, as your target probably isn't invoked.

 <condition property="isWindows">                     <os family="windows" />  </condition>   <condition property="isLinux">                     <os family="unix" />  </condition> 
like image 152
Drejc Avatar answered Sep 20 '22 15:09

Drejc