java - 如何构建文件名列表?

标签 java ant build

我需要编写一个 Ant 目标,将一个文件夹中的“.jar”文件名列表附加(以逗号分隔)到一个变量中,该变量稍后用作外部实用程序的输入。 我遇到了范围和不变性的障碍。我可以访问 ant-contrib,但不幸的是,我坚持使用的版本无法访问“for”任务。这是我到目前为止所拥有的:

<target name="getPrependJars">
    <var name="prependJars" value="" />
    <foreach param="file" target="appendJarPath">
        <path>
            <fileset dir="${project.name}/hotfixes">
                <include name="*.jar"/>
            </fileset>
        </path>         
    </foreach>

    <echo message="result ${prependJars}" />
</target>


<target name="appendJarPath">
    <if>
        <equals arg1="${prependJars}" arg2="" />
        <then>
            <var name="prependJars" value="-prependJars ${file}" />
        </then>
        <else>
            <var name="prependJars" value="${prependJars},${file}" />
        </else>
    </if>       
</target>

'appendJarPath' 似乎只在它自己的范围内修改'prependJars'。作为测试,我尝试使用“antcallback”,它适用于单个目标调用,但对我的文件列表没有太大帮助。

我意识到我的工作有点违背规律,在绝大多数情况下词法范围是可取的,但我真的希望以这种或另一种方式让它工作。有没有人有任何创造性的想法来解决这个问题?

最佳答案

您也许可以使用 pathconvert task ,它允许您将分隔符指定为逗号。

<target name="getPrependJars">
    <fileset id="appendJars" dir="${project.name}/hotfixes">
        <include name="*.jar" />
    </fileset>
    <pathconvert property="prependJars" refid="appendJars" pathsep="," />

    <echo message="prependJars: ${prependJars}" />
</target>

关于java - 如何构建文件名列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2140637/

相关文章:

Java webapp添加版本到应用程序静态内容以进行缓存

java - 检查包含值和类对象的 Arraylist 中的现有值

java - 在云中使用 Maven 和 MySQL 部署 Spring Web 应用程序?

ant - 如何从另一个文件中调用宏定义

security - 访问构建 Dockerfile 所需的 secret /私有(private)文件?

hadoop - 将工件部署到 Hadoop 集群

java - 在 Java EE 应用程序中使用 groovy?

ant - gradle wsimport 多个绑定(bind)

android - 使用 "ant debug"构建 osmand 会出错

windows - 运行从Haskell项目构建的exe文件时,停止打开命令提示符