2011-04-29 39 views
0

我想创建netbeans模块,它可以在标准的maven java项目上工作。有没有更好的方法来做到这一点,然后如何提供建议:How can I get a project type on Netbeans Platform?这似乎很依赖于implmenetation(请注意在查找中找到的实现类的* Impl后缀)。我无法在Project API中找到任何标准方法。有任何想法吗?或者是否安全依赖一些“NbMavenProjectImpl”字符串?netbeans平台应用程序中是否有更好的方式获取项目类型?

目前我会这样说:

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 
} 

回答

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,并作为奖励,你可以分享更多的项目类型之间的相同的业务逻辑的业务逻辑,如果适当。

+0

最后,我不得不使用我上面提到的解决方案(这是为了一些不能等待的工作)。但感谢您的解决方案,因为它们非常简洁明了! – 2011-07-28 06:26:12

相关问题