juin
2009
Ce billet entame une série de billets de type howto que je compte rédiger autour d’Eclipse en tant que plateforme de développement et non plus comme IDE.
Disons que c’est une sorte d’aide mémoire, pour moi certainement, et pour vous aussi je l’espère.
Le style sera un peu minimaliste : je vais aller directement à l’essentiel et au pratique, sans détailler la théorie de la chose : je vais montrer comment faire telle chose, pas ce qu’elle est ou à quoi elle sert.
Commençons par un point simple : Comment créer une nouvelle nature de projet ?
1. Définir la classe de la nature
Dans le plug-in qui va définir cette nature, modifier le manifest (META-INF/MANIFEST.MF) pour ajouter le bundle org.eclipse.core.resources (qui définit l’interface IProjectNature ainsi que le point d’extension org.eclipse.core.resources.natures) et org.eclipse.core.runtime (qui définit CoreException) :
Require-Bundle: org.eclipse.core.resources,
org.eclipse.core.runtime
Créez ensuite une classe qui implémente org.eclipse.core.resources.IProjectNature :
package com.developpez.djo.howto.nature;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectNature;
import org.eclipse.core.runtime.CoreException;
public class DummyNature implements IProjectNature {
public static final String NATURE_ID = "com.developpez.djo.howto.nature.dummyNature";
private IProject project;
public void configure() throws CoreException {
}
public void deconfigure() throws CoreException {
}
public IProject getProject() {
return project;
}
public void setProject(IProject project) {
this.project = project;
}
}
Notez le champ NATURE_ID que j’ai mis en public car ça va servir pour récupérer l’identifiant de la nature lors de son affectation à un projet par exemple.
2. Déclarer la nature dans plugin.xml
Il faut ensuite déclarer la nature dans plugin.xml :
name= »Ma nature de projets »
<extension
id="dummyNature"
name="Ma nature de projets"
point="org.eclipse.core.resources.natures">
<runtime>
<run
class="com.developpez.djo.howto.nature.DummyNature">
</run>
</runtime>
</extension>
N.B. (casse gueule)
Là il vous faut être attention : dans l’attribut id, il faut mettre seulement la partie de l’identifiant de la nature qui vient après l’identifiant du plugin.
Par exemple, dans ce cas ci, le plugin qui définit la nature a comme identifiant « com.developpez.djo.howto » (déclare dans le manifest) :
Bundle-SymbolicName: com.developpez.djo.howto.nature;singleton:=true
L’identifiant complet de la nature est calculé de cette façon :
<nom-symbloique-du-bundle> . <id-de-la-nature-tel-que-saisi-dans-plugin.xml>
com.developpez.djo.howto.nature . dummyNature
Ce qui donne : com.developpez.djo.howto.nature.dummyNature, et c’est cette valeur là qu’il faut mettre dans le champ NATURE_ID.
3. Associer une image (overlay) à la nature
Pour associer une image à la nature (c’est un overlay qui sera affiché au dessus de l’icône du dossier bleu d’un projet), il faut passer par un autre point d’extension qui est « org.eclipse.ui.ide.projectNatureImages » qui se trouve dans le plug-in « org.eclipse.ui.ide ». il vous faut donc ajouter ce plugin dans la section Require-Bundle du manifest (quoi que j’ai remarqué que même si j’ajoute pas une dépendance vers ce plugin, ça fonctionne quand même), et ensuite, dans plugin.xml, ajoutez :
<extension
point="org.eclipse.ui.ide.projectNatureImages">
<image
icon="icons/dummy-nature.png"
id="com.developpez.djo.howto.nature.dummyNature.img"
natureId="com.developpez.djo.howto.nature.dummyNature">
</image>
</extension>
Dans icon, utilisez le nom relatif d’une icône (de petite taille de préférence, genre 8×8). Dans id, renseigner n’importe quoi du moment que ça reste unique et un identifiant valide. Personnellement, j’ajoute « .img » à l’id de la nature. Enfin, dans natureId, renseigner l’identifiant complet de la nature.
N.B. (casse gueule)
N’oubliez pas d’inclure le dossier icons dans le binary build.
4. Source
Projet Eclipse (dans un jar) : com.developpez.djo.howto.nature.source_1.0.0.jar
Bonjour,
j’ai lu votre article , j’ai téléchargé le projet et je l’ai decompréssé dans les plugins d’eclipse puis j’ai lancé eclipse pour testé le plugin mais j’ai rien remarqué !
en fait j’ai pas compris où va apparaitre la modification apporté par le plugin .
ce que je vais faire dans ma tâche c’est un plugin qui me permettra d’ajouter un nouveau type de projet lors de la création tout comme les projet java . Meme objectif que hodac
merci de m’aider je débute avec les plug ins java et pour le moment je trouve pas de solutions
Bonjour,
je débute avec les natures de projets. Maintenant qu’on a une nature de projet, comment on fait pour qu’elle apparaisse dans le new project wizard (dans l’arbre qui permet de créer des projets java, plugins, etc…)?
en gros, je voudrais créer un wizard (WIZARD) qui s’ouvrirait en cliquant sur
file->new->project->->mon type de projet->WIZARD
Merci à tous pour vos retours, ça fait vraiment plaisir et ça donne envie de continuer
Encore et toujours des sujets plus qu’intéressant !
Merci et continue surtout !
Super, on va pouvoir corriger les lacunes de « com.google.appengine.eclipse.core.gaeNature » !!!
zeth696> Merci
C’est prévu dans un futur billet : comment créer un projet et y associer une nature.
merci de cette article qui semble parfaitement indiquer tout ce qu’il faut faire pour définir une nature de projet à eclipse.
aurais tu un exemple d’utilisation ? juste en donnant les grandes lignes comment fait tu ensuite pour ajouter les fonctionnalités comme celle d’un projet web dynamic et autres.