Depressio
Depressio

Reputation: 1379

Exclude fileset from another fileset using a property

I've been using Gradle almost exclusively lately, but every now and again I have to dive back into our antiquated ant build system and figure out how to do something. Then I realize how little I know about ant and/or how difficult even some of the simplest tasks appear to be.

For example, I have a target that does some operation on a fileset:

<target name="some-operation">

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

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

</target>

Imagine this is in some old build system that multiple projects use. I want to exclude additional things in the fileset (let's say, files inside directory "bar", similar to "foo"), but since this is something multiple projects use, I can't just go putting my custom exclusions into the build system. I need some way to plug that additional fileset in (it could contain multiple exclusions).

What's the best way of doing this? I'm thinking I'll set a property in my build with the files to exclude, but the some-operation target will have to handle it gracefully when that property is missing. However, if I set a fileset to a property, I'm not quite sure how to get it excluded from the original fileset in some-operation.

Any ideas of the best/cleanest way to do this?

Upvotes: 0

Views: 139

Answers (1)

Rebse
Rebse

Reputation: 10377

For reuse create a macrodef with nested element holding 1-n filesets for flexibility.
See this answer providing an example of macrodef using nested element.

Upvotes: 0

Related Questions