Come posso identificare il tipo di progetto come plug-in Eclipse?
Domanda
Voglio identificare il tipo (Java / C / ...) del progetto attualmente selezionato da un plug-in Eclipse;Se possibile, anche alcune altre informazioni (librerie usate e cosa), fondamentalmente tutte le informazioni che circondano il progetto.
Ho cercato Google e qui per un paio d'ore ora, senza alcun risultato.Posso persino accedere alle informazioni che voglio senza selezionare un punto di prolunga falso (nessuno di quelli elencati sembra adattarsi a quello che voglio fare)?Voglio dire, non voglio effettivamente aggiungere nulla a Eclipse in questo momento, voglio solo stampare quella roba nella console.(Inizia piccola e roba)
Scusa per il lungo rant, ma non so come meglio esprimere il mio problema in questo momento.
Soluzione
Un sacco di queste informazioni è memorizzato nel file .project
nella cartella del progetto. Il modo corretto per accedere alle informazioni avviene tramite l'oggetto IProject
per il progetto.
Il metodo IProject.getDescription
ti restituisce un IProjectDescription
contenente informazioni sul progetto.
Per determinare il tipo di progetto è necessario guardare il natures
definito nella descrizione del progetto. Il metodo IProjectDescription.getNatureIds()
restituisce una serie di ID naturali. Un progetto Java avrà il org.eclipse.jdt.core.javanature
e un plug-in avrà org.eclipse.pde.PluginNature
(e un plug-in Java avrà sia queste nature).
per trovare il IProject
. Se hai una selezione in qualcosa come il pacchetto o il progetto Explorer prova:
IResource resource = (IResource)Platform.getAdapterManager().getAdapter(obj, IResource.class);
.
o
IFile file = (IFile)Platform.getAdapterManager().getAdapter(obj, IFile.class);
.
Il metodo getProject()
di queste interfacce ti offre il IProject
. Puoi anche essere in grado di fare:
IProject project = (IProject)Platform.getAdapterManager().getAdapter(obj, IProject.class);
.
Platform
in quanto sopra è org.eclipse.core.runtime.Platform
(ci sono altre classi Platform
in Eclipse, quindi assicurati di ottenerne la corretta).
Se hai solo un nome di progetto, utilizzare:
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(name);
.