2012-06-13 25 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先生。 –

相關問題