diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 643e5e07c..1e9c53e38 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -7,6 +7,7 @@ Andreas Ames
Andreas Mross
Andrew Everitt
Andrey Urazov
+Andy Wood
Anil K. Vijendran
Anli Shundi
Anthony Goubard
diff --git a/WHATSNEW b/WHATSNEW
index acc8fe6f4..0f6ad59f2 100644
--- a/WHATSNEW
+++ b/WHATSNEW
@@ -31,6 +31,9 @@ Fixed bugs:
* Recursive filtering encountered NullPointerExceptions under certain
circumstances. Bugzilla 41086.
+* XmlProperty overrides previously set property value when handling duplicate
+ elements. Bugzilla 41080.
+
Other changes:
--------------
diff --git a/contributors.xml b/contributors.xml
index 0824884c9..18b55643d 100644
--- a/contributors.xml
+++ b/contributors.xml
@@ -38,6 +38,10 @@
Andrey
Urazov
+
+ Andy
+ Wood
+
Anil
K.
diff --git a/src/main/org/apache/tools/ant/taskdefs/XmlProperty.java b/src/main/org/apache/tools/ant/taskdefs/XmlProperty.java
index 26d9ee361..aaec951c1 100644
--- a/src/main/org/apache/tools/ant/taskdefs/XmlProperty.java
+++ b/src/main/org/apache/tools/ant/taskdefs/XmlProperty.java
@@ -499,10 +499,13 @@ public class XmlProperty extends org.apache.tools.ant.Task {
// to allow other properties to reference them.
value = (String) addedAttributes.get(name) + "," + value;
getProject().setProperty(name, value);
- } else {
+ addedAttributes.put(name, value);
+ } else if (getProject().getProperty(name) == null) {
getProject().setNewProperty(name, value);
+ addedAttributes.put(name, value);
+ } else {
+ log("Override ignored for property " + name, Project.MSG_VERBOSE);
}
- addedAttributes.put(name, value);
if (id != null) {
getProject().addReference(id, value);
}
diff --git a/src/tests/antunit/taskdefs/xmlproperty-test.xml b/src/tests/antunit/taskdefs/xmlproperty-test.xml
index c2fa0fa6c..6b1407c54 100644
--- a/src/tests/antunit/taskdefs/xmlproperty-test.xml
+++ b/src/tests/antunit/taskdefs/xmlproperty-test.xml
@@ -6,5 +6,12 @@
+
+
+
+
+
+
+