Las naturalezas de proyecto permiten a un conector codificar un proyecto como un tipo de proyecto específico. Por ejemplo, las Herramientas de desarrollo Java (JDT) utilizan una "naturaleza de Java" para añadir funciones específicas de Java a proyectos.
Las naturalezas se instalan por proyecto, se configuran automáticamente cuando se añaden a un proyecto y se desconfiguran cuando se eliminan. Un proyecto puede tener más de una naturaleza.
Para implementar su propia naturaleza, debe definir una extensión y suministrar una clase que implemente IProjectNature.
El punto de extensión org.eclipse.core.resources.natures se utiliza para añadir una definición de la naturaleza del proyecto. La siguiente marcación añade una naturaleza para el conector com.example.natures hipotético.
<extension
point="org.eclipse.core.resources.natures"
id="mynature"
name="My Nature">
<runtime>
<run class="com.example.natures.MyNature">
</run>
</runtime>
</extension>
La clase identificada en la extensión debe implementar la interfaz de plataforma IProjectNature. Cuando se configura la naturaleza, esta clase implementa la función específica del conector para asociar información específica de la naturaleza.
public class MyNature implements IProjectNature {
private IProject project;
public void configure() throws CoreException {
// Añadir información específica de la naturaleza
// para el proyecto, como añadir un constructor
// a una especificación de construcción del proyecto.
}
public void deconfigure() throws CoreException {
// Eliminar la información específica de la naturalea aquí.
}
public IProject getProject() {
return project;
}
public void setProject(IProject value) {
project = value;
}
}
La plataforma envía los métodos configure() y deconfigure() cuando las naturalezas se añaden y eliminan de un objeto. Puede implementar el método configure() para añadir un constructor a un proyecto, tal como se ha mostrado enConstructores.
Una vez ha definido la naturaleza e implementado su clase, debe asignar la naturaleza a un proyecto. El segmento siguiente asigna una naturaleza nueva a un proyecto determinado.
try {
IProjectDescription description = project.getDescription();
String[] natures = description.getNatureIds();
String[] newNatures = new String[natures.length + 1];
System.arraycopy(natures, 0, newNatures, 0, natures.length);
newNatures[natures.length] = "com.example.natures.mynature";
description.setNatureIds(newNatures);
project.setDescription(description, null);
} catch (CoreException e) {
// Algo ha ido mal
}
El identificador utilizado para la naturaleza es el nombre totalmente calificado (identificador del conector más identificador de extensión) de la extensión de la naturaleza.
Generalmente, las naturalezas se añaden a un proyecto cuando éste se crea. Es habitual proporcionar un asistente personalizado del nuevo proyecto, que captura la información específica sobre un proyecto y asigna a éste la naturaleza.