From fe67f956034a6bd80f0992140f1194d7bcb93ea0 Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Mon, 8 Dec 2008 15:13:09 +0000 Subject: [PATCH] add a failOnNoReplacements attribute to replace. PR 21064. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@724377 13f79535-47bb-0310-9956-ffa450edef68 --- WHATSNEW | 4 ++++ docs/manual/CoreTasks/replace.html | 6 ++++++ .../org/apache/tools/ant/taskdefs/Replace.java | 13 +++++++++++++ src/tests/antunit/taskdefs/replace-test.xml | 15 +++++++++++++++ 4 files changed, 38 insertions(+) diff --git a/WHATSNEW b/WHATSNEW index 0cab81c73..6c540aa82 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -616,6 +616,10 @@ Other changes: expanded. Bugzilla Report 11585. + * has a new attribute failOnNoReplacements that makes the + build fail if the task didn't do anything. + Bugzilla Report 21064. + Changes from Ant 1.7.0 TO Ant 1.7.1 ============================================= diff --git a/docs/manual/CoreTasks/replace.html b/docs/manual/CoreTasks/replace.html index 949112b05..c25da05e8 100644 --- a/docs/manual/CoreTasks/replace.html +++ b/docs/manual/CoreTasks/replace.html @@ -126,6 +126,12 @@ have been regenerated by this task.

is(are) modified. since Ant 1.8.0. No, defaults to false + + failOnNoReplacements + Whether to fail the build if the task didn't do + anything. since Ant 1.8.0. + No, defaults to false +

Examples

  <replace file="${src}/index.html" token="@@@" value="wombat"/>
diff --git a/src/main/org/apache/tools/ant/taskdefs/Replace.java b/src/main/org/apache/tools/ant/taskdefs/Replace.java index 4efe38552..f669dbe18 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Replace.java +++ b/src/main/org/apache/tools/ant/taskdefs/Replace.java @@ -80,6 +80,7 @@ public class Replace extends MatchingTask { private Union resources; private boolean preserveLastModified = false; + private boolean failOnNoReplacements = false; /** * An inline string to use as the replacement text. @@ -559,6 +560,9 @@ public class Replace extends MatchingTask { log("Replaced " + replaceCount + " occurrences in " + fileCount + " files.", Project.MSG_INFO); } + if (failOnNoReplacements && replaceCount == 0) { + throw new BuildException("didn't replace anything"); + } } finally { replacefilters = savedFilters; properties = savedProperties; @@ -894,6 +898,15 @@ public class Replace extends MatchingTask { preserveLastModified = b; } + /** + * Whether the build should fail if nothing has been replaced. + * + * @since Ant 1.8.0 + */ + public void setFailOnNoReplacements(boolean b) { + failOnNoReplacements = b; + } + /** * Adds the token and value as first <replacefilter> element. * The token and value are always processed first. diff --git a/src/tests/antunit/taskdefs/replace-test.xml b/src/tests/antunit/taskdefs/replace-test.xml index 3f3090978..67bdddbfc 100644 --- a/src/tests/antunit/taskdefs/replace-test.xml +++ b/src/tests/antunit/taskdefs/replace-test.xml @@ -67,4 +67,19 @@ Hello, world! resource="${output}/text.txt" value="Hello, Ant!"/> + + + + + + + + + + + + + + +