Hello! In essence, I would like to know how to define a global property conditionally, and then have it available to all build files via <import>.
Now the details: I have a build.common.xml file with all global properties and paths defined. I import it into my main build and component build files via <import>, and this makes everything that is defined in the common file available to all other build files. build.common.xml: <property name="build.classes" value="${build}/classes"/> ... <path id="compile.classpath"> <pathelement location="${build}/classes"/> <path refid="jdk.classpath"/> <fileset dir="${lib}"> <include name="**/*.jar"/> </fileset> ... Then, I have a main build.xml that calls a few component build.xml via <ant file=...> call. If I <import> the build.common.xml into all my build files - I have all properties and paths available to all builds. It all works great, but now I want to have the build.classes property set conditionally, based on the build mode (dev vs. release). Ideally, I would like something similar to the C #ifdef macros: build.common.xml: if mode='dev' then <property name="build.classes" value="${build}/dev/classes"/> else <property name="build.classes" value="${build}/release/classes"/> I can do the <if> logic if I define this property in the main build, for example, as part of some <init> task. But, it means that the property is not global anymore, and, which is more important, I cannot define my paths in the build.common.xml based on the value of this property. At least I could not figure out yet a way to do it... So, I was pondering over a few options: 1. define all properties like that and paths in the main build.xml and pass them as parameters to all component builds - very involved and inflexible... 2. define a target <init> in the build.common.xml that defines all those properties and paths - and make all builds call it (or depend on it) - again, very involved in terms of refactoring my existing builds, and inflexible. 3. any other way??? If only I could just define that one global property conditionally! I feel like I'm missing some basic core concept here.... Any pointers? Thanks! Marina