Derived resources
Many resources get created in the course of translating, compiling, copying,
or otherwise processing files that the user creates and edits. Derived
resources are resources that are not original data, and can be recreated
from their source files. It is common for derived files to be excluded
from certain kinds of processing.
For example, derived resources are typically not kept in a team repository,
since they clutter the repository, change regularly, and can be recreated from
their source files. It is not practical for team providers to make
decisions about which files are derived. The resource API provides a
common mechanism for plug-ins to indicate the resources they create that are
derived.
Plug-ins may use
IResource.setDerived(boolean)
to indicate that a resource is derived from other resources. Newly created resources are not
derived by default, so this
method must be used to explicitly mark the resource as derived. A
common use is to mark a subfolder of the project as derived when an
"output" folder (such as the "bin" folder in Java projects)
is created by the plug-in.
Other plug-ins, usually team providers, can use
IResource.isDerived
to determine whether a particular resource should be managed by the
repository. Attempts to mark projects or the workspace root as derived will be
ignored.
Note: The concept of derived resources is provided for other
(non-team) plug-ins to indicate which resources are inappropriate for repository
management. Special files created by team implementations to manage their
data should not be marked as derived resources. See
Teamprivate resources for a technique for marking team-related implementation
resources hidden.