将运行时设置为IFacetedProject

时间:2012-06-13 13:06:38

标签: eclipse runtime rcp eclipse-wtp pde

我编写了一个Eclipse插件,它使用Eclipse WTP中的API创建了一个新的“EAR应用程序项目”。我在为这个新项目设置“运行时”值时遇到了一些困难。

当我使用Eclipse GUI(作为“普通”用户)创建相同项目时,这是“org.eclipse.wst.common.project.facet.core.xml”的内容:

<?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>

但是当创建一个Faceted Project(使用WTP插件提供的API)时,我找不到将以下值设置为我的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>

以下是我如何创建这个项目:

        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);

我做错了吗?

1 个答案:

答案 0 :(得分:0)

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

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