Browse Source

Make sure user-properties remain user-properties.

This is a partial merge of Ant.java from the 1.5 branch (only partial,
sorry Magesh) that is required to avoid a Gump build failure of
avalon-phoenix (which does several nested <ant>'s with varying
inheritall values and ends up with relying on a property that has been
set on the command line but has disappeared).


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@272796 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 23 years ago
parent
commit
c09d386575
1 changed files with 31 additions and 19 deletions
  1. +31
    -19
      src/main/org/apache/tools/ant/taskdefs/Ant.java

+ 31
- 19
src/main/org/apache/tools/ant/taskdefs/Ant.java View File

@@ -184,6 +184,12 @@ public class Ant extends Task {
if (p.getResource() != null) { if (p.getResource() != null) {
newP.setResource(p.getResource()); newP.setResource(p.getResource());
} }
if (p.getRefid() != null) {
newP.setRefid(p.getRefid());
}
if (p.getEnvironment() != null) {
newP.setEnvironment(p.getEnvironment());
}
properties.setElementAt(newP, i); properties.setElementAt(newP, i);
} }
} }
@@ -243,31 +249,37 @@ public class Ant extends Task {
newProject.addDataTypeDefinition(typeName, typeClass); 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, // set Java built-in properties separately,
// b/c we won't inherit them. // b/c we won't inherit them.
newProject.setSystemProperties(); 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);
}
} }
} }
} }


Loading…
Cancel
Save