使用属性从另一个文件集中排除文件集

时间:2014-07-14 22:16:23

标签: ant

我最近几乎一直都在使用Gradle,但我不得不一次又一次地回到我们陈旧的蚂蚁构建系统中并想出如何做某事。然后我意识到我对蚂蚁的了解甚少,以及甚至一些最简单的任务看起来有多困难。

例如,我有一个对文件集执行某些操作的目标:

<target name="some-operation">

    <fileset dir="blah" id="stuff">
        <filename name="**/*.txt" />
        <not>
            <filename name="**/foo/*" />
        </not>
    </fileset>

    <!-- do some operations on "stuff" -->

</target>

想象一下,这是在一些多个项目使用的旧构建系统中。我想在文件集中排除其他内容(比方说,目录“bar”中的文件,类似于“foo”),但由于这是多个项目使用的东西,我不能只将我的自定义排除项放入构建系统。我需要一些方法来插入其他文件集(它可能包含多个排除项)。

这样做的最佳方法是什么?我想我会在我的版本中设置一个属性,其中包含要排除的文件,但some-operation目标必须在缺少该属性时正常处理它。但是,如果我将文件集设置为属性,我不太确定如何将其从some-operation中的原始文件集中排除。

有关最佳/最干净方法的任何想法吗?

1 个答案:

答案 0 :(得分:0)

为了重用,请创建一个macrodef,其中嵌套元素包含1-n个文件集以提高灵活性 请参阅this answer,提供使用嵌套元素的macrodef示例。