diff --git a/WHATSNEW b/WHATSNEW
index 591ae4196..457a3ee11 100644
--- a/WHATSNEW
+++ b/WHATSNEW
@@ -26,6 +26,9 @@ Fixed bugs:
* Incorrect task name with invalid "javac" task after a "presetdef.
Bugzilla reports 31389 and 29499.
+* Execution of top level tasks in imported files get delayed by targets.
+ Bugzilla report 31487.
+
Other changes:
--------------
diff --git a/src/etc/testcases/taskdefs/import/importtargetfirst.xml b/src/etc/testcases/taskdefs/import/importtargetfirst.xml
new file mode 100644
index 000000000..dd8f92b8c
--- /dev/null
+++ b/src/etc/testcases/taskdefs/import/importtargetfirst.xml
@@ -0,0 +1,5 @@
+
+ Importing targetfirst
+
+ After importing
+
diff --git a/src/etc/testcases/taskdefs/import/targetfirst.xml b/src/etc/testcases/taskdefs/import/targetfirst.xml
new file mode 100644
index 000000000..a8e234abe
--- /dev/null
+++ b/src/etc/testcases/taskdefs/import/targetfirst.xml
@@ -0,0 +1,4 @@
+
+
+ After target first
+
diff --git a/src/main/org/apache/tools/ant/helper/ProjectHelper2.java b/src/main/org/apache/tools/ant/helper/ProjectHelper2.java
index f5c5dbcc5..25ced2d8c 100644
--- a/src/main/org/apache/tools/ant/helper/ProjectHelper2.java
+++ b/src/main/org/apache/tools/ant/helper/ProjectHelper2.java
@@ -116,15 +116,18 @@ public class ProjectHelper2 extends ProjectHelper {
// we are in an imported file.
context.setIgnoreProjectTag(true);
Target currentTarget = context.getCurrentTarget();
+ Target currentImplicit = context.getImplicitTarget();
try {
Target newCurrent = new Target();
newCurrent.setProject(project);
newCurrent.setName("");
context.setCurrentTarget(newCurrent);
+ context.setImplicitTarget(newCurrent);
parse(project, source, new RootHandler(context, mainHandler));
newCurrent.execute();
} finally {
context.setCurrentTarget(currentTarget);
+ context.setImplicitTarget(currentImplicit);
}
} else {
// top level file
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/ImportTest.java b/src/testcases/org/apache/tools/ant/taskdefs/ImportTest.java
index 946aa539c..524494451 100644
--- a/src/testcases/org/apache/tools/ant/taskdefs/ImportTest.java
+++ b/src/testcases/org/apache/tools/ant/taskdefs/ImportTest.java
@@ -142,4 +142,8 @@ public class ImportTest extends BuildFileTest {
}
}
+ public void testTargetFirst() {
+ configureProject("src/etc/testcases/taskdefs/import/importtargetfirst.xml");
+ assertLogContaining("Importing targetfirstAfter target firstAfter importing");
+ }
}