diff --git a/WHATSNEW b/WHATSNEW
index 138baa622..e157334c6 100644
--- a/WHATSNEW
+++ b/WHATSNEW
@@ -4,6 +4,9 @@ Changes from Ant 1.9.0 TO current
Changes that could break older environments:
-------------------------------------------
+ * Users who have their own ProjectHelper implementation will need to change it because the import and include tasks
+ will now default the targetPrefix to ProjectHelper.USE_PROJECT_NAME_AS_TARGET_PREFIX.
+ Users using the default ProjectHelper2 with ant need not worry about this change done to fix Bugzilla Report 54940.
Fixed bugs:
@@ -21,6 +24,11 @@ Fixed bugs:
* Fixed loading of external dependencies in JUnit task.
Bugzilla Report 54835.
+ * Target rewriting for nested "include" only works when "as" is specified.
+ See also "Changes that could break older environments"
+ Bugzilla Report 54940.
+
+
Other changes:
--------------
diff --git a/src/main/org/apache/tools/ant/ProjectHelper.java b/src/main/org/apache/tools/ant/ProjectHelper.java
index b9df28cae..fa54a9f24 100644
--- a/src/main/org/apache/tools/ant/ProjectHelper.java
+++ b/src/main/org/apache/tools/ant/ProjectHelper.java
@@ -71,6 +71,12 @@ public class ProjectHelper {
*/
public static final String PROJECTHELPER_REFERENCE = MagicNames.REFID_PROJECT_HELPER;
+ /**
+ * constant to denote use project name as target prefix
+ * @since Ant 1.9.1
+ */
+ public static final String USE_PROJECT_NAME_AS_TARGET_PREFIX = "USE_PROJECT_NAME_AS_TARGET_PREFIX";
+
/**
* Configures the project with the contents of the specified build file.
*
diff --git a/src/main/org/apache/tools/ant/helper/ProjectHelper2.java b/src/main/org/apache/tools/ant/helper/ProjectHelper2.java
index 517f1ca5b..57936b7be 100644
--- a/src/main/org/apache/tools/ant/helper/ProjectHelper2.java
+++ b/src/main/org/apache/tools/ant/helper/ProjectHelper2.java
@@ -732,12 +732,10 @@ public class ProjectHelper2 extends ProjectHelper {
project.setName(value);
project.addReference(value, project);
} else if (isInIncludeMode()) {
- if (!"".equals(value)
- && (getCurrentTargetPrefix() == null
- || getCurrentTargetPrefix().length() == 0)
- ) {
+ if (!"".equals(value) && getCurrentTargetPrefix()!= null && getCurrentTargetPrefix().endsWith(ProjectHelper.USE_PROJECT_NAME_AS_TARGET_PREFIX)) {
+ String newTargetPrefix = getCurrentTargetPrefix().replace(ProjectHelper.USE_PROJECT_NAME_AS_TARGET_PREFIX, value);
// help nested include tasks
- setCurrentTargetPrefix(value);
+ setCurrentTargetPrefix(newTargetPrefix);
}
}
}
diff --git a/src/main/org/apache/tools/ant/taskdefs/ImportTask.java b/src/main/org/apache/tools/ant/taskdefs/ImportTask.java
index d6de610b3..2da7f55b4 100644
--- a/src/main/org/apache/tools/ant/taskdefs/ImportTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/ImportTask.java
@@ -64,7 +64,7 @@ import java.util.Vector;
public class ImportTask extends Task {
private String file;
private boolean optional;
- private String targetPrefix;
+ private String targetPrefix = ProjectHelper.USE_PROJECT_NAME_AS_TARGET_PREFIX;
private String prefixSeparator = ".";
private final Union resources = new Union();
private static final FileUtils FILE_UTILS = FileUtils.getFileUtils();
@@ -199,7 +199,7 @@ public class ImportTask extends Task {
return;
}
- // nested invokations are possible like an imported file
+ // nested invocations are possible like an imported file
// importing another one
String oldPrefix = ProjectHelper.getCurrentTargetPrefix();
boolean oldIncludeMode = ProjectHelper.isInIncludeMode();
@@ -209,7 +209,9 @@ public class ImportTask extends Task {
if (isInIncludeMode() && oldPrefix != null
&& targetPrefix != null) {
prefix = oldPrefix + oldSep + targetPrefix;
- } else if (targetPrefix != null) {
+ } else if (isInIncludeMode()) {
+ prefix = targetPrefix;
+ } else if (!ProjectHelper.USE_PROJECT_NAME_AS_TARGET_PREFIX.equals(targetPrefix)) {
prefix = targetPrefix;
} else {
prefix = oldPrefix;
diff --git a/src/tests/antunit/taskdefs/importtests/w.xml b/src/tests/antunit/taskdefs/importtests/w.xml
new file mode 100644
index 000000000..e400c501d
--- /dev/null
+++ b/src/tests/antunit/taskdefs/importtests/w.xml
@@ -0,0 +1,22 @@
+
+
+
+ ${ant.file.w}
+
+
+
diff --git a/src/tests/antunit/taskdefs/importtests/x.xml b/src/tests/antunit/taskdefs/importtests/x.xml
new file mode 100644
index 000000000..a509e574e
--- /dev/null
+++ b/src/tests/antunit/taskdefs/importtests/x.xml
@@ -0,0 +1,22 @@
+
+
+
+ ${ant.file.x}
+
+
+
diff --git a/src/tests/antunit/taskdefs/importtests/y.xml b/src/tests/antunit/taskdefs/importtests/y.xml
new file mode 100644
index 000000000..0e54fa838
--- /dev/null
+++ b/src/tests/antunit/taskdefs/importtests/y.xml
@@ -0,0 +1,22 @@
+
+
+
+ ${ant.file.y}
+
+
+
diff --git a/src/tests/antunit/taskdefs/importtests/z.xml b/src/tests/antunit/taskdefs/importtests/z.xml
new file mode 100644
index 000000000..607dee7e9
--- /dev/null
+++ b/src/tests/antunit/taskdefs/importtests/z.xml
@@ -0,0 +1,21 @@
+
+
+
+ ${ant.file.z}
+
+
diff --git a/src/tests/antunit/taskdefs/include-test.xml b/src/tests/antunit/taskdefs/include-test.xml
index 74da94e73..7e1a45231 100644
--- a/src/tests/antunit/taskdefs/include-test.xml
+++ b/src/tests/antunit/taskdefs/include-test.xml
@@ -18,9 +18,9 @@
-
-
-
+
+
+
@@ -50,4 +50,9 @@
+
+
+
+
+