2012-06-13 30 views
0

我编写了一个使用Eclipse WTP中的API创建新的“EAR应用程序项目”的Eclipse插件。我发出一些困难来为这个新项目设置“运行时间”值。将运行时设置为IFacetedProject

这就是 “org.eclipse.wst.common.project.facet.core.xml的” 当我使用Eclipse创建GUI同一个项目的内容(作为一个 '正常' 的用户):

<?xml version="1.0" encoding="UTF-8"?> 
<faceted-project> 
    <runtime name="GlassFish 3.1.2"/> 
    <fixed facet="jst.ear"/> 
    <installed facet="jst.ear" version="6.0"/> 
    <installed facet="sun.facet" version="9"/> 
</faceted-project> 

但是,创建面项目(使用所提供的API由WTP插件)我不能找到一种方法来设置以下值到我的EAP项目时:

<runtime name="GlassFish 3.1.2"/> 
    <fixed facet="jst.ear"/> 

以下是当我编程方式创建这个项目被写入相同的XML :

<?xml version="1.0" encoding="UTF-8"?> 
<faceted-project> 
    <installed facet="jst.ear" version="6.0"/> 
    <installed facet="sun.facet" version="9"/> 
</faceted-project> 

下面是如何创建的IM项目:

 IFacetedProject facetedProject = ProjectFacetsManager.create("prj1", new Path(prj), null); 
     IFacetedProjectWorkingCopy workingCopy = facetedProject.createWorkingCopy(); 

     IProjectFacet jstFacet = ProjectFacetsManager.getProjectFacet("jst.ear"); 
     IProjectFacet sunFacet = ProjectFacetsManager.getProjectFacet("sun.facet"); 

     IProjectFacetVersion defaultJstFacet = jstFacet.getDefaultVersion(); 
     IProjectFacetVersion defaultSunFacet = sunFacet.getDefaultVersion(); 
     workingCopy.addProjectFacet(defaultJstFacet); 
     workingCopy.addProjectFacet(defaultSunFacet); 
     workingCopy.commitChanges(null); 

我做错什么了吗?

回答

0

要设置固定构面,您需要使用IFacetedProjectWorkingCopy.setFixedProjectFacets()方法。

要设置运行时,您需要使用IFacetedProjectWorkingCopy.setTargetedRuntimes()方法。您可以通过RuntimeManager API(例如getRuntimes()或getRuntimes(name))定位IRuntime实例。

+0

太棒了!有用。但是,当我将它作为Junit插件测试运行时,不会加载相同的运行时。我认为JUnit不会加载所需的捆绑包。你有什么想法在运行JUnit插件测试时识别运行时(在我的情况下,Glassfish 3.1.2)需要什么?谢谢Komissarchik先生。 –

相关问题