# Builds

A build is a process that derives new resources from existing ones, updates existing resources, or both.

In the Workbench, different builders are invoked for different types of projects. For example, when a build is triggered for a Java project, a Java builder converts each Java source file (.java files) into one or more executable class files (.class files). Builders usually enforce the constraints of some domain. For example, a Web link builder could update links to files whose name/location changes.

There are two kinds of builds:

- An incremental build leverages a previously built state and applies the transforms of the configured builders to the resources that have changed since the previous state was computed (that is, since the last build).

- A clean build discards any problems and previously built state. The next build after a clean will transform all resources according to the domain rules of the configured builders.

Incremental and clean builds can be done over a specific set of projects or the workspace as a whole. Specific files and folders cannot be built. There are two ways that builds can be performed:

- Automatic builds are performed as resources are saved. Automatic builds are always incremental and always operate over the entire workspace. You can configure your preferences ( General > Workspace) to perform builds automatically on resource modification.
- Manual builds are initiated when you explicitly select a menu item or press the equivalent shortcut key. Manual builds can be either clean or incremental and can operate over collections of projects or the entire workspace.

### Related concepts

External tools

### Related tasks

Building resources
Performing builds manually
Performing builds automatically
Saving resources automatically before a manual build
Changing build order