Les compilateurs créent ou modifient des ressources de l'espace de travail, généralement en fonction de l'existence et de l'état d'autres ressources. Il s'agit de puissants mécanismes qui permettent de mettre en oeuvre les contraintes de certaines domaines. Par exemple, un compilateur Java convertit des fichiers source Java (fichiers .java) en fichiers de classe exécutables (fichiers .class), un compilateur de liens Web met à jour les liens vers des fichiers dont le nom/emplacement a changé, etc. A mesure que des ressources sont créées et modifiées, des compilateurs sont exécutés et les contraintes sont préservées. Cette conversion n'a pas à s'effectuer sur le principe un à un. Par exemple, un fichier .java peut générer plusieurs fichiers .class.
Il existe deux modes de compilations distincts : la compilation automatique et la compilation à l'initiative de l'utilisateur.
Les utilisateurs qui n'ont pas besoin de contrôler au plus près le déroulement des compilations peuvent tout simplement activer la compilation automatique. Dans ce mode, les compilations s'effectuent après chaque série de modifications de ressources (par exemple, sauvegarde d'un fichier, importation d'un ZIP, ...). La compilation automatique est efficace car la quantité de travail effectuée est proportionnelle à la quantité de modifications entrées. La compilation automatique présente l'avantage d'avoir toujours des ressources dérivées (par exemple, les fichiers .class Java) à jour. La compilation automatique est activée/désactivée via l'option Effectuer une compilation automatique dans la page des préférences Général > Espace de travail.
Les utilisateurs qui veulent contrôler de plus près les compilations peuvent désactiver la compilation automatique et lancer les compilations manuellement.Ce mode de fonctionnement est préférable lorsque, par exemple, vous savez pertinemment qu'une compilation n'a aucun intérêt tant que vous n'avez pas effectué un nombre suffisamment important de modifications. Dans ce cas, les frais de compilations automatiques prématurées sont superflus. Vous pouvez lancer des compilations manuelles de différentes manières, par exemple en sélectionnant Générer un projet dans le menu contextuel du projet.
L'inconvénient de la compilation manuelle réside dans le fait que les incidents générés pour indiquer des erreurs se périment rapidement jusqu'à ce que vous compiliez. De plus, vous ne devez pas oublier d'effectuer une compilation manuelle avant de vous fier aux résultats de compilation (par exemple, avant d'exécuter le programme Java).
Les compilations s'effectuent de manière incrémentielle en fonction de l'état de compilation antérieur. Elles appliqueront les conversions des compilateurs configurés uniquement aux ressources qui ont été modifiées depuis le calcul de l'état précédent (c'est-à-dire depuis la dernière compilation). La compilation automatique utilise toujours une compilation incrémentielle pour plus d'efficacité.
Une compilation de nettoyage (Projet > Nettoyer) élimine tout état de compilation existant. La compilation postérieure à un nettoyage convertira toutes les ressources en fonction des règles de domaine des compilateurs configurés.
En fonction des besoins de l'utilisateur, la compilation et le nettoyage peuvent être effectués sur un ensemble spécifique de projets ou sur l'intégralité de l'espace de travail. Des fichiers et des dossiers spécifiques peuvent être compilés séparément.