Apache Ant copy de forma condicional el file de la plantilla y carga las properties

Tengo un file de properties (x.props) que contiene las properties requeridas para una compilation Ant:

x.props:

prop1=something prop2=somethingElse 

establecido en build.xml:

  <property file="x.props" /> 

Las properties contenidas en x.props se usan luego en una tarea de ruta:

  <path id="project.class.path"> <pathelement location="${prop1}/important.jar"/> <pathelement location="${prop2}/anotherImportant.jar"/> </path> 

Antes de que comience la compilation. No creo explícitamente estas properties en build.xml

El file x.props puede ser diferente para cada usuario local, pero para las comstackciones del server no cambia.

Creé un file x.props.template para abordar el problema de que los usuarios accidentalmente revisen o actualicen este file (pero deben poder verificarlo). Quiero poder crear un file x.props desde x.props.template (configuro x.props como svn: ignorar).

Los usuarios pueden save el file de plantilla como x.props y editarlo y, teóricamente, el server Ant build.xml puede copyr el file de plantilla al server x.props si no existe.

Pero eso no está sucediendo. Intenté usar un objective:

  <target name="x-props-file" unless="prop1" description="create a local.properties file if it doesn't exist"> <copy file="x.props.template" tofile="x.props" /> </target> 

Pero se llama DESPUÉS de que se establezca la ruta.

Traté de crear el file como una condición:

  <condition available="x.props"> <not> <copy file="x.props.template" tofile="x.props" /> </not> </condition> 

Pero "no" y "condición" no funcionan con la copy.

loadProperties fallará si el file no se encuentra, pero no copyrá un file.

Idealmente, me gustaría poder copyr el nuevo x.props justo después de que falla la carga inicial del file.

¿Hay alguna forma de evitar esto?

ant versión 1.1 java 7

Gracias

Esto probablemente sería más simple con la tarea <if> ant-contrib:

 <if> <not> <available file="x.props" /> </not> <then> <copy file="x.props.template" tofile="x.props" /> </then> </if> 

Editar: Acabo de networkingescubrir esta respuesta que di hace años después de que se agregó un comentario, y me di count de que hay una solución mucho mejor que no depende de ant-contrib. Probablemente sea demasiado tarde para ser de mucha utilidad para el póster original, pero pensé que lo ofrecería de todos modos en caso de que ayudara a alguien:

 <property file="x.props" /> <property name="prop1" value="something" /> <property name="prop1" value="somethingElse" /> <path id="project.class.path"> <pathelement location="${prop1}/important.jar"/> <pathelement location="${prop2}/anotherImportant.jar"/> </path> 

No es necesario un file de plantilla adicional. Intente cargar primero el file de properties y configure sus valores pnetworkingeterminados inmediatamente después de eso, haciendo uso de la inmutabilidad inherente de las properties de Ant.

Por el contrario, si realmente desea utilizar un file de properties separado para mantener sus valores pnetworkingeterminados, simplemente haga lo mismo que arriba, pero reemplace las asignaciones de properties individuales con otra carga de file de properties:

 <property file="x.props" /> <property file="default.props" />