ant - ¿Cómo puedo iterar sobre las propiedades de un archivo?
ant-contrib (2)
Todos mis proyectos y sus versiones se definen en un archivo de propiedades como este:
ProjectNameA=0.0.1
ProjectNameB=1.4.2
Me gustaría iterar sobre todos los proyectos y usar sus nombres y versiones en un script Ant.
Actualmente leo el archivo completo usando la tarea de propiedad, luego repito sobre una lista dada en un ciclo for como este:
<for list="ProjectNameA,ProjectNameB" param="project">
<sequential>
<echo message="@{project} has version ${@{project}}" />
</sequential>
</for>
¿Cómo puedo evitar la codificación de los nombres de los proyectos en el ciclo for? Básicamente itere sobre cada línea y extraiga el nombre y la versión de un proyecto sobre la marcha.
Como ya está usando antcontrib, ¿qué le parece utilizar la tarea de selección de propertyselector
?
<property file="properties.txt" prefix="projects."/>
<propertyselector property="projects" match="projects/.(.*)" select="/1"/>
<property file="properties.txt" />
<for list="${projects}" param="project">
...
</for>
La idea aquí es leer las propiedades una vez con el prefijo de projects
y usar el conjunto de propiedades resultante para crear una lista de proyectos separados por comas con la tarea de selección de propertyselector
. Luego, las propiedades se vuelven a leer sin el prefijo, de modo que su ciclo for puede continuar como antes.
Algo que desea tener en cuenta, si está leyendo archivos .property adicionales (además de build.properties) es el alcance. Si lee un archivo adicional (a través del archivo de propiedad = "foo.property"), la hormiga mostrará que el archivo fue leído y las propiedades cargadas. Sin embargo, cuando los referencia a ellos, aparecen sin definir.