3

我已经对此进行了一些谷歌搜索,但我似乎找不到任何符合我需要的东西。

我在我们的部署中使用 ANTForms 作为 GUI。开发人员可以从动态填充的下拉列表中选择构建,点击 ok 就可以了。

目前动态填充下拉列表的方式是通过 ANT 向我们的 ColdFusion 服务器发出 HTTP Web 服务调用,为其提供所需的 SVN 目录列表。然后 CF 使用一点下划线 Java 调用 SVNKit 并返回一个查询结果供 CF 处理。它将其转换为逗号分隔的列表,将其输出给 ANT,然后构建这些下拉选项。

我使用 CF 是因为那是我们的主要语言。我真的不知道任何Java,但是让我有点烦恼的是,如果我知道我可以让ANT 直接与Java / SVNKit 对话,因此将CF 完全排除在外。它可能还会消除对 HTTP 调用的需要,因为 SVN 设置是本地的,因此速度会提高 + 它消除了对外部源的依赖。

有没有人这样做过,或者你知道我能看到的任何工作示例,表明 ANT 直接与 SVNKit 对话来做这种事情?

我在 Subclipse 上查看了通常的 SVN ANT 任务,但他们没有任何方法可以做到这一点。

任何帮助表示赞赏,詹姆斯

4

1 回答 1

2

与其尝试在 Java 中构建一些东西,不如根据标准 subversion 客户端生成的 XML 输出,使用 XLST 生成您的 ANTForm 配置文件:

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

生成以下release.xml文件(为清楚起见,我对其进行了编辑):

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

例子

示例由两个文件组成

  • genGUI.xml
  • genGUI.xsl

运行如下:

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>
于 2010-08-20T19:02:11.200 回答