Community
Participate
Working Groups
Build F1 When an incremental build occurs on a project, the first builder before the java builder, and the last builder after the java builder are the only External Tool builders that get run. All builders get run when a full build occurs.
An auto-build seems to only invoke the first external tool on the list of tools to run. It doesn't matter how many other builders are defined, or whether the external tool comes before or after the java builder in the build order.
Moving to Core for comments. Adam, could you provide a simple test case and steps to reproduce this?
*** Bug 17642 has been marked as a duplicate of this bug. ***
1) Create an empty project. 2) Add to it a file called build.xml containing the text: <project default="main"> <target name="main"> <echo message="${message}"/> </target> </project> 3) Add 4 builders to the project, all running build.xml. Call them first, second, third, and fourth respectively. Each builder should pass the argument - Dmessage=name_of_current_builder. Put the java builder between "second" and "third". 4) Close the properties box. Notice that the build runs, and only "first" is printed. 5) Create a new java file, and compile it with an incremental build. Notice that "first" and "third" are printed. 6) Rebuild the entire project using Project->Rebuild Project. Notice that all 4 messages get printed.
Will fix.
This is actually a feature ;) On incremental builds, we avoid invoking a builder if no changes have happened since the last time it was called. So, on the second invocation of the builder, it detects that nothing has changed, and skips it. The fix that you guys should put in, is for your builder to call IncrementalProjectBuilder#forgetLastBuiltState() at any time during the build. This will discard the old state, so we will no longer be able to detect if anything changed since the last build. This will cause your builder to be invoked every time. The downside is that no deltas are received, but in the case of external tool builders, you aren't interested in deltas anyway. Having said all that, we discovered a bug in forgetLastBuiltState() this week. I have released a fix to HEAD this afternoon, and it will be in the next build (>20020530). It is still safe to call that method, but it will have no effect until this fix is available. Moving back to UI (assigning to Adam, feel free to change if this isn't correct)
*** Bug 17439 has been marked as a duplicate of this bug. ***
Change released. Please verify.
Build 20020602 (F2 candidate 2) Fix verified.
Works nicely in 20020611