blob: 8b35eafdf27d404402cf69655c9fd866fe26587f [file] [log] [blame]
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Mozilla/4.75 [en] (Windows NT 5.0; U) [Netscape]">
<title>Incremental Project Builders</title>
</head>
<body link="#0000FF" vlink="#800080">
<center>
<h1>
Incremental Project Builders</h1></center>
<b><i>Identifier: </i></b>org.eclipse.core.resources.builders
<p><b><i>Description: </i></b>The workspace supports the notion of an incremental
project builder (or "builder" for short").&nbsp; The job of a builder is
to process a set of resource changes (supplied as a resource delta).&nbsp;
For example, a Java builder would recompile changed Java files and produce
new class files.
<p>Builders are configured on a per-project basis and run automatically
when resources within their project are changed.&nbsp; As such, builders
should be fast and scale with respect to the amount of change rather than
the number of resources in the project.&nbsp; This typically implies that
builders are able to incrementally update their "built state".
<p>The builders extension-point allows builder writers to register their
builder implementation under a symbolic name that is then used from within
the workspace to find and run builders. The symbolic name is the id of
the builder extension.&nbsp; When defining a builder extension, users are
encouraged to include a human-readable value for the "name" attribute which
indentifies their builder and potentially may be presented to users.
<p><b><i>Configuration Markup:</i></b>
<p><tt>&nbsp;&nbsp; &lt;!ELEMENT builder run?></tt>
<br><tt>&nbsp;&nbsp; &lt;!ATTLIST builder</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hasNature&nbsp;&nbsp;&nbsp; CDATA
#IMPLIED</tt>
<br><tt>&nbsp;&nbsp; ></tt>
<ul>
<li>
<b>hasNature-</b> "<tt>true</tt>" or "<tt>false</tt>" indicating whether
this builder is owned by a project nature.&nbsp; If "<tt>true</tt>" and
no corresponding nature is found, this builder will not run but will remain
in the project's build spec.&nbsp; If this attribute is not specified,
it is assumed to be "<tt>false</tt>".</li>
</ul>
<tt>&nbsp;&nbsp; &lt;!ELEMENT run parameter*>&nbsp;&nbsp; &lt;!ATTLIST
run</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CDATA #REQUIRED</tt>
<br><tt>&nbsp;&nbsp; ></tt>
<ul>
<li>
<b>class -</b> the fully-qualified name of a subclass of <tt>org.eclipse.core.resources.IncrementalProjectBuilder</tt>.</li>
</ul>
<tt>&nbsp;&nbsp; &lt;!ELEMENT parameter EMPTY></tt>
<br><tt>&nbsp;&nbsp; &lt;!ATTLIST parameter</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CDATA #REQUIRED</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CDATA #REQUIRED</tt>
<br><tt>&nbsp;&nbsp; ></tt>
<ul>
<li>
<b>name</b> - the name of this parameter made available to instances of
the specified builder class</li>
<li>
<b>value</b> - an arbitrary value associated with the given name and made
available to instances of the specified builder class</li>
</ul>
<b><i>Examples:</i></b>
<p>Following is an example of a builder configuration:
<p><tt>&nbsp;&nbsp; &lt;extension id="coolbuilder" name="Cool Builder"
point="org.eclipse.core.resources.builders"></tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;builder hasNature="false"></tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;run class="com.xyz.builders.Cool"></tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;parameter name="optimize" value="true"/></tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;parameter name="comment" value="Produced by the Cool Builder"/></tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/run></tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/builder></tt>
<br><tt>&nbsp;&nbsp; &lt;/extension></tt>
<p>If this extension was defined in a plug-in with id "com.xyz.coolplugin",
the fully qualified name of this builder would be "com.xyz.coolplugin.coolbuilder".
<p><b><i>API Information</i>: </b>The value of the <tt>class</tt> attribute
must represent a subclass of <tt>org.eclipse.core.resources.IncrementalProjectBuilder</tt>.
<p><b><i>Supplied Implementation:</i></b> The platform itself does not
have any predefined builders. Particular product installs may include builders
as required.
<p><a href="hglegal.htm"><img SRC="ngibmcpy.gif" ALT="Copyright IBM Corp. 2000, 2002. All Rights Reserved." BORDER=0 height=12 width=195></a>
</body>
</html>