diff --git a/src/main/org/apache/tools/ant/taskdefs/Ant.java b/src/main/org/apache/tools/ant/taskdefs/Ant.java index 5cc2e07b0..8cb591321 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Ant.java +++ b/src/main/org/apache/tools/ant/taskdefs/Ant.java @@ -184,6 +184,12 @@ public class Ant extends Task { if (p.getResource() != null) { newP.setResource(p.getResource()); } + if (p.getRefid() != null) { + newP.setRefid(p.getRefid()); + } + if (p.getEnvironment() != null) { + newP.setEnvironment(p.getEnvironment()); + } properties.setElementAt(newP, i); } } @@ -243,31 +249,37 @@ public class Ant extends Task { newProject.addDataTypeDefinition(typeName, typeClass); } - // set user-defined or all properties from calling project - Hashtable prop1; - if (inheritAll) { - prop1 = project.getProperties(); - } else { - prop1 = project.getUserProperties(); + // set user-defined + Hashtable props = getProject().getUserProperties(); + e = props.keys(); + while (e.hasMoreElements()) { + String arg = e.nextElement().toString(); + String value = props.get(arg).toString(); + newProject.setUserProperty(arg, value); + } + if (!inheritAll) { // set Java built-in properties separately, // b/c we won't inherit them. newProject.setSystemProperties(); - } - e = prop1.keys(); - while (e.hasMoreElements()) { - String arg = (String) e.nextElement(); - if ("basedir".equals(arg) || "ant.file".equals(arg)) { - // basedir and ant.file get special treatment in execute() - continue; - } + } else { + // set all properties from calling project + + props = getProject().getProperties(); + e = props.keys(); + while (e.hasMoreElements()) { + String arg = e.nextElement().toString(); + if ("basedir".equals(arg) || "ant.file".equals(arg)) { + // basedir and ant.file get special treatment in execute() + continue; + } - String value = (String) prop1.get(arg); - if (inheritAll){ - newProject.setProperty(arg, value); - } else { - newProject.setUserProperty(arg, value); + String value = props.get(arg).toString(); + if (newProject.getProperty(arg) == null){ + // no user property + newProject.setProperty(arg, value); + } } } }