尝试使用ANT获取目录中所有文件的文件名

Th3*_*m4n 4 ant

例如

/test/a.jar
/test/b.jar
/test/c.jar

output:
a.jar
b.jar
c.jar
Run Code Online (Sandbox Code Playgroud)

这大部分都有效,除了它似乎只是获取其中一个文件,而不是全部=/

       <for param="file">
            <path>
                <fileset dir="${test.dir}/lib">
                    <include name="**/*.jar"/>
                </fileset>
            </path>
            <sequential>
                <basename property="filename" file="@{file}"/>
                <echo message="${filename}"/>
            </sequential>
        </for>
Run Code Online (Sandbox Code Playgroud)

这只是让我:

c.jar
c.jar
c.jar
Run Code Online (Sandbox Code Playgroud)

mar*_*ton 6

您遇到的问题是Ant属性的不变性 - 一旦设置了属性,通常就无法更改该值.

第一次围绕循环设置filename属性,并且该值"坚持".

从Ant 1.8开始,local任务允许您将属性本地化为当前执行块.例如,你的意思sequential是:

<sequential>
    <local name="filename" />
    <basename property="filename" file="@{file}"/>
    <echo message="${filename}"/>
</sequential>
Run Code Online (Sandbox Code Playgroud)

Ant会在顺序结束时忘记属性,因此可以在每次迭代中使用新值.