Cómo get una list de directorys de SVN para su uso en el menu desplegable ANT

He hecho algunas búsquedas en Google sobre esto, pero parece que no puedo encontrar nada en la línea de lo que estoy necesitando.

Estoy usando ANTForms para la GUI en nuestra implementación. Los desarrolladores pueden elegir la compilation desde el menu desplegable dinámicamente poblado , presionar Aceptar y listo.

La manera en que el menu desplegable se llena dinámicamente en este momento es por medio de ANT que realiza una llamada de service web HTTP a nuestro server ColdFusion para get una list de los directorys SVN necesarios. CF luego usa un poco de Java subrayando para llamar a SVNKit y devolver un resultado de consulta para que CF procese. Convierte esto en una list separada por comas, lo emite para ANT y luego construye estas opciones desplegables.

Estoy usando CF porque ese es nuestro idioma principal. Realmente no conozco Java, pero lo que me molesta un poco es que, si lo hiciera, sé que podría hacer que ANT hable directamente con Java / SVNKit y, por lo tanto, elimine por completo la CF. Probablemente también eliminaría la necesidad de la llamada HTTP ya que la configuration de SVN es local, por lo que un aumento de velocidad está allí + elimina la dependencia de una fuente externa.

¿Alguien ha hecho esto o sabe algún ejemplo de trabajo que pudiera ver que muestre a ANT hablando directamente con SVNKit para hacer este tipo de cosas?

Eché un vistazo a las tareas habituales de SVN ANT en Subclipse pero no tienen forma de hacerlo.

Cualquier ayuda apreciada, James

En lugar de intentar crear algo en Java, ¿por qué no generar su file de configuration ANTForm utilizando XLST, basado en el resultado XML producido por el cliente de subversión estándar?

svn list --xml http://svn.apache.org/repos/asf/ant/ivy/core/tags > releases.xml 

Produce el siguiente file releases.xml (lo he editado para mayor claridad):

 <?xml version="1.0"?> <lists> <list path="http://svn.apache.org/repos/asf/ant/ivy/core/tags"> <entry ..> <name>1.4.1</name> .. </entry> <entry ..> <name>2.0.0</name> .. </entry> </list> </lists> 

Ejemplo

El ejemplo está compuesto por dos files

  • genGUI.xml
  • genGUI.xsl

Ejecuta de la siguiente manera:

 ant -f genGUI.xml 

genGUI.xml

 <project name="genGUI" default="run"> <property name="repo.url" value="http://svn.apache.org/repos/asf/ant/ivy/core/tags"/> <property name="build.dir" location="build"/> <property name="xsl.file" location="genGUI.xsl"/> <property name="data.file" location="${build.dir}/data.xml"/> <property name="run.file" location="${build.dir}/run.xml"/> <target name="init"> <mkdir dir="${build.dir}"/> </target> <target name="get-data" depends="init"> <exec executable="svn" failonerror="true" output="${data.file}"> <arg line="list --xml ${repo.url}"/> </exec> </target> <target name="generate" depends="get-data"> <xslt style="${xsl.file}" in="${data.file}" out="${run.file}"/> </target> <target name="run" depends="generate"> <ant antfile="${run.file}"/> </target> <target name="clean"> <delete dir="${build.dir}"/> </target> </project> 

genGUI.xsl

 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes"/> <xsl:variable name="antform-home">${env.ANTFORM_HOME}</xsl:variable> <xsl:template match="/"> <project name="genForm" default="menu"> <property environment="env"/> <path id="runtime.cp"> <pathelement location="{$antform-home}/lib/antform.jar"/> </path> <target name="menu"> <taskdef name="antmenu" classname="com.sardak.antform.AntMenu" classpathref="runtime.cp"/> <antmenu image="{$antform-home}/doc/images/logo-small.jpg" title="My simple form" stylesheet="{$antform-home}/style.test"> <label>Form is generated from subversion</label> <xsl:apply-templates select="lists/list/entry"/> </antmenu> </target> </project> </xsl:template> <xsl:template match="entry"> <button label="{name}" target="{name}"/> </xsl:template> </xsl:stylesheet>