<target name="setupProduction" if="production">
In our example, the filter in the setupProduction target sets jdbc_url to jdbc::production, while the filter in the setupDevelopment target sets jdbc_url to jdbc::development.
Later, when the script uses a copy task with filtering on, it applies the filter to all files in the file set specified by the copy. The copy task with filtering on replaces all occurrences of the string @jdbc_url@ with jdbc::production if the production property is set but to jdbc::development if the production property is not set.