Getting directory listing from SVN for use in ANT dropdown

前端 未结 1 626
南笙
南笙 2020-12-19 18:12

I\'ve done some Googling on this but I can\'t seem to find anything along the lines of what I\'m needing.

I\'m using ANTForms for the GUI on our deployment. Develope

相关标签:
1条回答
  • 2020-12-19 18:42

    Rather than trying to build something in Java why not generate your ANTForm configuration file using XLST, based on the XML output produced by the standard subversion client:

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

    Produces the following releases.xml file (I've edited it for clarity):

    <?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>
    

    Example

    Example is comprised of two files

    • genGUI.xml
    • genGUI.xsl

    Run as follows:

    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>
    
    0 讨论(0)
提交回复
热议问题