Y at-il une meilleure façon d'obtenir le type de projet dans l'application de la plate-forme NetBeans?
-
27-10-2019 - |
Question
Je suis en train de créer NetBeans module qui travail whould sur des projets Maven standard java. Y at-il une meilleure façon de le faire alors comment il a été conseillé dans: Comment puis-je obtenir un type de projet sur la plate-forme NetBeans ? Cela semble être assez dépendant implmenetation (notez le postfix * Impl de la classe implémentant trouvée dans recherche). Je ne pouvais pas trouver une méthode standard dans l'API du projet. Des idées? Ou est-il sûr de compter sur une chaîne « NbMavenProjectImpl »?
À l'heure actuelle, je vais ainsi:
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
}
La solution
Une approche serait
if (mainProject.getLookup().lookup(NbMavenProject.class) != null) {
// do stuff
}
Un autre, qui devrait être préféré, est d'enregistrer votre logique métier dans le projet Maven recherche par exemple. en utilisant une annotation
@ProjectServiceProvider(service=MyService.class, projectType="org-netbeans-modules-maven")
public class MyServiceImpl implements MyService {
@Override
public void doit() {
}
}
et accéder à la logique métier comme
MyService ms = mainProject.getLookup().lookup(MyService.class);
if (ms != null) {
ms.doit()
}
De cette façon, vous pouvez découpler votre API de mise en œuvre et en tant que bonus, vous pouvez partager la même logique d'affaires entre plusieurs types de projets, le cas échéant.