Find the Best Cosmetic Hospitals

Explore trusted cosmetic hospitals and make a confident choice for your transformation.

“Invest in yourself — your confidence is always worth it.”

Explore Cosmetic Hospitals

Start your journey today — compare options in one place.

Apache Ant Copy + FileSet Include Issue: Why Comma-Separated include name Fails

If your Apache Ant <copy> task seems to skip files when you use <include>, the problem is usually pattern syntax, not the copy task itself. This guide explains why one style fails, why the other works, and how to write include rules that are predictable.

Originally published on 2009-06-20; fully revised and updated.

Source scenario: DevOpsSchool original post.

Apache Ant copy and include issue

Why Program 1 fails and Program 2 works

In a <fileset>, a nested <include name="..."/> expects one pattern per include element. It does not automatically split a comma-separated string into many names. By contrast, the includes="..." attribute supports a list, so comma-separated values are parsed as multiple patterns.

Failing style (single nested include with commas)

<copy todir="${Temp}/uaw/Uaw_compilescripts">
    <fileset dir="${SVNCheckout}/scripts/compilescripts">
        <include name="BuildSh,Compsh,vsamc,buildc.sh,script,compl2,main.sh,makefile,makepl1,script"/>
    </fileset>
</copy>Code language: HTML, XML (xml)

This is treated as one literal pattern string. Unless a real filename matches that entire comma-joined value, no files are copied.

Working styles

<!-- Option A: one nested include per pattern -->
<copy todir="${Temp}/uaw/Uaw_compilescripts">
    <fileset dir="${SVNCheckout}/scripts/compilescripts">
        <include name="BuildSh"/>
        <include name="Compsh"/>
        <include name="vsamc"/>
        <include name="buildc.sh"/>
        <include name="script"/>
        <include name="compl2"/>
        <include name="main.sh"/>
        <include name="makefile"/>
        <include name="makepl1"/>
    </fileset>
</copy>

<!-- Option B: includes attribute with a list -->
<copy todir="${Temp}/uaw/Uaw_compilescripts">
    <fileset dir="${SVNCheckout}/scripts/compilescripts"
             includes="BuildSh,Compsh,vsamc,buildc.sh,script,compl2,main.sh,makefile,makepl1"/>
</copy>Code language: HTML, XML (xml)

How Ant processes include patterns

flowchart TD
    A[copy task runs] --> B[fileset reads base directory]
    B --> C{Pattern source}
    C --> D[includes attribute list]
    C --> E[nested include elements]
    D --> F[List split into multiple patterns]
    E --> G[Each include name is one pattern]
    F --> H[Matching files copied]
    G --> I[Comma joined name usually no match]
    I --> J[Copy seems to fail]

Comparison of include approaches

ApproachExample syntaxHow patterns are interpretedTypical result
Nested include with comma list<include name=”a,b,c”/>Single pattern stringUsually no matches
Nested include, one per item<include name=”a”/> then <include name=”b”/>Each include is evaluated separatelyWorks as expected
includes attribute listincludes=”a,b,c”List is split into multiple patternsWorks as expected

Debugging and verification commands

When copy behavior is unclear, run Ant in verbose or debug mode to inspect resolved file patterns and copied files.

ant -v copy-scripts
ant -d copy-scripts
<target name="copy-scripts">
    <copy todir="${Temp}/uaw/Uaw_compilescripts" overwrite="true">
        <fileset dir="${SVNCheckout}/scripts/compilescripts"
                 includes="BuildSh,Compsh,vsamc,buildc.sh,script,compl2,main.sh,makefile,makepl1"/>
    </copy>
</target>Code language: HTML, XML (xml)

Best practices

  • Use includes="..." for compact lists, or one nested <include> per pattern.
  • Avoid duplicates in include lists (for example, repeated script entries) to keep builds readable.
  • Prefer explicit filenames or well-scoped wildcards so copy behavior is deterministic.
  • Use ant -v or ant -d whenever file selection does not match expectations.

Find Trusted Cardiac Hospitals

Compare heart hospitals by city and services — all in one place.

Explore Hospitals
I'm Rajesh Kumar, a DevOps, SRE, DevSecOps, Cloud, and Platform Engineering expert passionate about sharing practical knowledge, real-world experiences, and industry best practices. I have worked at Cotocus and regularly write about technology, travel, investing, health, product reviews, and digital marketing through my various platforms. I publish technical articles at DevOps School, travel stories at Holiday Landmark, stock market insights at Stocks Mantra, health and fitness guidance at My Medic Plus, product reviews at TrueReviewNow, and SEO and digital marketing strategies at Wizbrand.

Related Posts

Apache Ant Interview Questions Answered: Concepts, build.xml Examples, and Practical Snippets

This guide converts a long Apache Ant interview question list into clear, practical answers with working build.xml examples. It covers core Ant concepts, common tasks, debugging, and Ant vs Maven vs Make.

Read More

Apache Ant Comments and echo Task: Write Clear build.xml Files and Control Log Output

Learn the correct way to add comments in Apache Ant and when to use the echo task instead. This guide covers echo attributes, log-level behavior, and practical build.xml examples.

Read More

How to Run Ant Builds in IntelliJ IDEA: Setup, Troubleshooting, and Copy Task Patterns

This guide shows how to integrate a build.xml file with IntelliJ IDEA, run Ant targets from the IDE, and troubleshoot common environment-variable issues. It also compares practical Ant copy/fileset patterns with reusable examples.

Read More

Apache Ant clean, prepare, and compile Targets: A Practical build.xml Walkthrough

Learn how to structure a simple Ant build pipeline using clean, prepare, and compile targets with explicit dependencies. This revision includes a complete build.xml example, execution commands, and a workflow diagram.

Read More

Apache Ant Copy Task Examples: File, FileSet, Include/Exclude, and Flatten Patterns

Learn practical Apache Ant copy task patterns for real build pipelines, from single-file copies to filtered FileSets and flattened library bundles. Includes reusable XML snippets and a workflow diagram.

Read More

Apache Ant Dependency Visualization: AntScript Visualizer, Grand, and Vizant

A practical, updated guide to three classic Apache Ant visualization tools and how they help you understand target dependencies. Includes a side-by-side comparison, workflow diagram, and example commands.

Read More
Subscribe
Notify of
guest
1 Comment
Newest
Oldest Most Voted
Jason Mitchell
Jason Mitchell
3 months ago

In enterprise build environments, file selection problems are often symptoms of a larger challenge around artifact consistency. When different teams modify build scripts over time, there is a risk of creating hidden dependencies on folder structures or naming conventions that are not documented anywhere. A good practice is to treat generated artifacts as testable outputs by adding checks for file integrity, expected contents, and version consistency before they move to later stages of the pipeline. This helps catch packaging issues early and avoids situations where deployments succeed technically but fail due to incomplete or incorrect artifacts.

1
0
Would love your thoughts, please comment.x
()
x