Community
Participate
Working Groups
R2.0 The registered Java Builder (Project -> Properties -> External Tools Builders) can't be removed and hence I can't replace it with my own build mechanism (e.g. using Java 1.5 without getting errors from the current Java builder).
Moving to Platform Core: All builders which are contributed via XML can neither be removed nor edited. I can not change the sequence either: all buttons are disabled. How is the sequence specified?
This is by design. Users are only allowed to rearrange or otherwise modify their own tool script builders. They are not allowed to touch the builders that have been installed programatically. A builder installed by a given nature should only be removed or modified by the plugin that defined it. I believe the reasoning was that unexpectedly removing or reordering a builder defined by a plugin may cause other functionality in that plugin to break. This is discussed in more detail in a document by Jeem, "RFC 0009 - Improved Build Story" on the platform core web page. That document also recommends: "Individual builders provide a pre-project preference setting to allow the user to disable it if they can forsee users wanting to (and being permitted to) replace it. For example, it should be possible to disable the Java builder for a project so that the user can run an Ant script that calls a javac instead. " Philippe, I don't know if Jeem ever discussed that with you, but did you have plans to allow users to turn off or otherwise replace the java builder?
So, where is the order specified? I could not find it in the xml.
The build order is specified in the build spec on the project description. Anyone can modify this programatically, but generally each builder will add their builder at the desired position in the list. Nature dependencies can be used to ensure that particular builders are configured before other builders. Nature dependencies are specified in the XML for the nature definition. Is there something in particular you're trying to accomplish?
We did some SDK 1.5 testing. We tried to register an external builder to compile the code but it failed because the built-in Java builder failed and because the built-in one could not be removed hence locking us into what we already have. I think it is a fair request that I can exchange (or at least disable) it if I want.
Moving to JDT for consideration to add an option to disable (or replace or remove) the java builder from java projects. We provide API to do this, so there's not much else for platform core to do here. We don't want to allow the user to remove arbitrary builders from the project.
I wouldn't expect all builder contributors to provide an option for disabling their builder, this would quickly become insane. There should rather be a generic platform wizard allow to pick which builder is used for some natures. I could even envisage the external tools to be shown in there, and user would pick whichever he wants. Furthermore, I would be curious to know how the platform would react to multiple Java builder contributions... as a user, I might want to have the option to pick the one I want to run. Back to Platform.
Moving to Platform/UI for consideration of adding a builder configuration/removal wizard. Let us know if current API does not suffice.
After talking with John Arthorne and Jim desRivieres I think that allowing for general adding and removal of specified builders has too many implications throughout the workbench. The suggestion is that the Java Builder allow for greater configurability to allow for this switch - disabling it or replacing it is a pretty scary change. I am returning this to JDT Core to consider what should be done to configure the builder.
I disagree. I understand that given the current API, clients have to be responsible to register their own builder, preventing any generic control. Deferring until some consensus is reached, e.g. 3.0 APIs could be changed.
Too be more precise. Suggested action from platform is only a work-around.
Moving to Platform side for further consideration at generic level.
Seems like it is possible to disable Java Builder in 3.0 M6.
You still can not remove the Java Builder but you can disable any builder in the Project > Properties > Builders page.