Есть ли лучший способ получить тип проекта в приложении платформы NetBeans?
-
27-10-2019 - |
Вопрос
Я пытаюсь создать модуль NetBeans, который работает над стандартными проектами Maven Java. Есть ли какой -нибудь лучший способ сделать это тогда, как это было рекомендовано: Как я могу получить тип проекта на платформе Netbeans? Похоже, что это довольно зависит от импменметации (обратите внимание на пост -фикс *IMP реализации класса, найденный в поиске). Я не мог найти никакого стандартного метода в API проекта. Любые идеи? Или безопасно полагаться на какую -то строку "nbmavenProjectImpl"?
В настоящее время я иду так:
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
}
Решение
Один подход был бы
if (mainProject.getLookup().lookup(NbMavenProject.class) != null) {
// do stuff
}
Еще один, который должен быть предпочтительным, - это зарегистрировать вашу бизнес -логику в поиск проекта Maven, например. используя аннотацию
@ProjectServiceProvider(service=MyService.class, projectType="org-netbeans-modules-maven")
public class MyServiceImpl implements MyService {
@Override
public void doit() {
}
}
а затем доступ к бизнес -логике, как
MyService ms = mainProject.getLookup().lookup(MyService.class);
if (ms != null) {
ms.doit()
}
Таким образом, вы можете отделить свой API от реализации, и в качестве бонуса вы можете поделиться той же бизнес -логикой между большим количеством типов проектов, если это необходимо.