J'ai fait un nouveau plugin dans eclipse qui ajoute une nouvelle entrée de projet qui peut ensuite être utilisée pour ajouter un nouveau projet.eclipse plugin> projet java, comment
mais quand va projeter les propriétés que je reçois ceci:
au lieu de ceci:
, ma question est, comment obtenir mon projet d'inclure également toutes les choses java (comme: java build path, etc ...), car je veux que ce projet soit basé sur le projet java par défaut.
comment je fais le projet est actuellement (code):
@Override
public boolean performFinish()
{
if (project != null)
{
return true;
}
final IProject projectHandle = wizardPage.getProjectHandle();
URI projectURI = (!wizardPage.useDefaults()) ? wizardPage.getLocationURI() : null;
IWorkspace workspace = ResourcesPlugin.getWorkspace();
final IProjectDescription desc = workspace.newProjectDescription(projectHandle.getName());
desc.setLocationURI(projectURI);
WorkspaceModifyOperation op = new WorkspaceModifyOperation()
{
protected void execute(IProgressMonitor monitor) throws CoreException
{
createProject(desc, projectHandle, monitor);
}
};
try
{
getContainer().run(true, true, op);
}
catch (InterruptedException e)
{
return false;
}
catch (InvocationTargetException e)
{
Throwable realException = e.getTargetException();
MessageDialog.openError(getShell(), "Error", realException.getMessage());
return false;
}
project = projectHandle;
if (project == null)
{
return false;
}
BasicNewProjectResourceWizard.updatePerspective(config);
BasicNewProjectResourceWizard.selectAndReveal(project, workbench.getActiveWorkbenchWindow());
return true;
}
modifier ***
ok donc la solution est d'ajouter une facette au projet. si je le fais manuellement après avoir créé un nouveau projet via mon plugin - à partir du clic droit, des propriétés du projet - cela fonctionne. comment ajouter cette facet programmatique?
modifier 2 ***
ok, il se fait via:
description.setNatureIds
mais pas tout à fait.
voici comment le projet semble quand j'ajouter manuellement la facette (et voilà comment je veux regarder):
ce qui est la façon dont il semble en fait quand j'ajouter la nature id "org.eclipse.jdt.core.javanature" programmaticaly (pas comment je le veux)
alors ... comment résoudre ce problème? Ai-je besoin d'une autre nature?
ici est le contenu du fichier .project quand j'ajouter manuellement la facette:
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>test</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.common.project.facet.core.builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
également le fichier .classpath est ajouté (lors de l'ajout facette manuellement, mais il n'y a pas de fichier quand il est ajouté programmaticaly) :
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
<attributes>
<attribute name="owner.project.facets" value="java"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
ici est aussi ma méthode createProject():
private void createProject(IProjectDescription description, IProject proj, IProgressMonitor monitor)
throws CoreException, OperationCanceledException
{
try
{
monitor.beginTask("", 2000);
proj.create(description, new SubProgressMonitor(monitor, 10));
if (monitor.isCanceled())
{
throw new OperationCanceledException();
}
proj.open(IResource.BACKGROUND_REFRESH, new SubProgressMonitor(monitor, 10));
IContainer container = (IContainer) proj;
[ *** ]
}
finally
{
monitor.done();
}
}
fonctionne, mais pas tout à fait, voir la question originale (j'ai mis des images là-bas;) pour une meilleure explication. – b0x0rz
l'ai ajouté ... – b0x0rz
quand je copie le fichier .classpath du projet de facette ajouté manuellement, au programmaticaly fait un, ceci le fixe, mais maintenant la question est comment ajouter le stuff dans .classpath programmaticaly aussi bien? J'espère que ce sera la dernière étape pour résoudre ce problème :) – b0x0rz