Gibt es einen besseren Weg, um den Projekttyp innerhalb der Netbeans -Plattformanwendung zu erhalten?
-
27-10-2019 - |
Frage
Ich versuche, Netbeans -Modul zu erstellen, das an Standard -Maven -Java -Projekten arbeiten würde. Gibt es einen besseren Weg, um das zu tun, wie es in Folgendes geprüft wurde: Wie kann ich einen Projekttyp auf der Netbeans -Plattform erhalten? Dies scheint ziemlich abhängig von der Implmenetation zu sein (beachten Sie die *Impl -Postfix der implementierenden implementierenden Klasse). Ich konnte keine Standardmethode in der Projekt -API finden. Irgendwelche Ideen? Oder ist es sicher, sich auf eine "NBMAVENProjectImpl" -Schuge zu verlassen?
Derzeit gehe ich in diesem Weg:
Project mainProject = OpenProjects.getDefault().getMainProject();
if (mainProject == null) {
return;
}
String projectType = mainProject.getClass().getName();
if (projectType.equals("NbMavenProjectImpl")) {
// do some action with the project here
}
Lösung
Ein Ansatz wäre
if (mainProject.getLookup().lookup(NbMavenProject.class) != null) {
// do stuff
}
Ein weiterer, der bevorzugt werden sollte, besteht darin, Ihre Geschäftslogik in der SO -SOKUP -EG von Maven Project zu registrieren. Verwenden einer Annotation
@ProjectServiceProvider(service=MyService.class, projectType="org-netbeans-modules-maven")
public class MyServiceImpl implements MyService {
@Override
public void doit() {
}
}
und dann auf die Geschäftslogik zugreifen wie
MyService ms = mainProject.getLookup().lookup(MyService.class);
if (ms != null) {
ms.doit()
}
Auf diese Weise können Sie Ihre API von der Implementierung entkoppeln, und als Bonus können Sie gegebenenfalls dieselbe Geschäftslogik zwischen mehr Projekttypen teilen.