diff --git a/WHATSNEW b/WHATSNEW
index 0cab81c73..6c540aa82 100644
--- a/WHATSNEW
+++ b/WHATSNEW
@@ -616,6 +616,10 @@ Other changes:
expanded.
Bugzilla Report 11585.
+ *
<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!"/>
+