我正在尝试创建可以在标准maven java项目上工作的netbeans模块。有没有更好的方法来做到这一点然后如何建议:How can I get a project type on Netbeans Platform?这似乎非常依赖于implmenetation(注意在查找中找到的实现类的* Impl后缀)。我在Project 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
}
答案 0 :(得分:3)
一种方法是
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与实现分离,作为奖励,您可以在更多项目类型之间共享相同的业务逻辑(如果适用)。