Есть ли лучший способ получить тип проекта в приложении платформы NetBeans?

StackOverflow https://stackoverflow.com/questions/5831396

Вопрос

Я пытаюсь создать модуль 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 от реализации, и в качестве бонуса вы можете поделиться той же бизнес -логикой между большим количеством типов проектов, если это необходимо.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top