麻豆传媒视频在线,国产91精品不卡视频,欧美jizz19性欧美,污视频网站在线观看,91涩漫在线观看,伊人发布在线,九色porny丨首页在线,福利视频一区,久久av网址,久久人人视频

當前位置:首頁 > 網站舊欄目 > 學習園地 > 設計軟件教程 > Eclipse WTP Projects Facets實戰指南(1)

Eclipse WTP Projects Facets實戰指南(1)
2010-01-14 23:04:52  作者:  來源:

這個文章基本是"Building Project Facets"的中文版

在WTP中創建Dynamic Web Project工程的時候提供了Project Facets的功能,它讓用戶在創建web項目的時候,可以像搭積木一下給我們創建的project添加各種功能模塊,下面我們通過一個例子來講解一下WTP中的Project Facets的用法

通常我們給創建的工程可能添加以下元素:資源文件, Builder, Nature標識等, 我們知道Eclipse本身提供了一個Nature的功能,但是Facets跟Nature是有區別的, 給工程添加Nature是用來給Eclipse底層的工具使用的,而Facets是用來給最終用戶使用的, 通常Facets提供的模塊都是自描述的,這樣可以保證用戶在使用的時候,避免添加不必要的Facet模塊, 而且對于我們開發者而言也避免了在新建向導中插入新的wizard page以及避免通過右鍵菜單來給工程添加或者去掉某模塊,從而大大簡化了開發人員的工作量, 因此Facets對用戶和開發者來說都是一個不錯的選擇

下面我們結合一個名為FormGen的實例來介紹, FormGen用來在我們創建的web工程中,加入一些我們自己的jar包以及修改web.xml文件

廢話少說,先在插件工程中添加org.eclipse.wst.common.project.facet.core.facets 擴展點, 當然這里需要在依賴中加入org.eclipse.wst.common.project.facet.core引用,該擴展點包羅萬象,這里我們遵循循序漸進的原則,從最最簡單的內容開始:

xml 代碼
 
  1. <extension point="org.eclipse.wst.common.project.facet.core.facets">    
  2.   
  3.   <project-facet id="{string}"> (0 or more)   
  4.     <label>{string}label>  
  5.     <description>{string}description> (optional)   
  6.   project-facet>  
  7.   
  8.   <project-facet-version facet="{string}" version="{string}"/> (0 or more)   
  9.      
  10. extension>  

這里加入了兩個節點:project-facet是我們要加入的facet, project-facet-version用來制定我們的facet版本, 每一個facet至少需要給它指定一個版本,否則不可用, 后面大家就會知道,實際上我們大部分工作都集中在project-facet-version中配置, 配置后的代碼如下:
 

xml 代碼
 
  1. <extension point="org.eclipse.wst.common.project.facet.core.facets">  
  2.   
  3.   <project-facet id="formgen.core">  
  4.     <label>FormGen Corelabel>  
  5.     <description>  
  6.       Enables generation of HTML forms based on XML definition files.   
  7.     description>  
  8.   project-facet>  
  9.   
  10.   <project-facet-version facet="formgen.core" version="1.0"/>  
  11.   
  12.   <project-facet id="formgen.ext">  
  13.     <label>FormGen Extensionslabel>  
  14.     <description>  
  15.       Enables additional FormGen widgets.   
  16.     description>  
  17.   project-facet>  
  18.   
  19.   <project-facet-version facet="formgen.ext" version="1.0"/>  
  20.      
  21. extension>  

設置好后運行我們的插件項目,創建一個Dynamic Web Project, 在向導中第一個頁面的Target Runtime設置為none,繼續進入到下一個頁面,這時在下面的列表中就會出現我們添加的兩個facet

接下來的工作就是給facet指定約束
由于我們的FormGen是基于Servlet的,因此它應該適用于所有的Java EE項目.下面我們通過增加約束讓FormGen facet也能在EJB項目向導中使用.
下面是我們將要用到的擴展節點的相關說明:

xml 代碼
 
  1. <extension point="org.eclipse.wst.common.project.facet.core.facets">  
  2.   <project-facet-version>  
  3.     <constraint> (optional)   
  4.       [expr]   
  5.     constraint>  
  6.   project-facet-version>  
  7. extension>  
  8.   
  9. [expr] =   
  10.   <requires facet="{string}" version="{version.expr}" soft="{boolean}"/> or   
  11.   <conflicts facet="{string}" version="{version.expr}"/> or   
  12.   <conflicts group="{string}"/> or   
  13.   <and>  
  14.     [expr] (1 or more)   
  15.   and> or   
  16.   <or>  
  17.     [expr] (1 or more)   
  18.   or>  

約束由樹狀結構的表達式組成, 它包括4個部分,這里我們分別來加以說明:

requires:是用的最多的部分,它表示當前的facet還需要依賴的其他facet, 如果對所依賴的facet沒有版本要求,那么不用設置version屬性, version可以設置為表達式, soft屬性用來創建一種特定類型的依賴,即如果依賴facet不存在,那么當前facet將不會在選項列表中出現,其本facet必須在引用facet之后被安裝

conflicts:沖突約束用來制定如果在同一個工程中已經存在了這里指定的facet,那么當前聲明的facet將不可用,它用兩種形式:可以指定單個沖突或組(group)沖突的facet.對于組沖突,這里需要解釋一下, 組沖突用來指定當前的facet與沒有在facet列表中列出的某一類facet有沖突,比如說, WTP自己的moudule facet都屬于moudules組, 而這些facet在定義的時候,都將組沖突設置為modules, 這樣就可以保證兩個module不會同時安裝在同一個工程中

要讓一個facet屬于某個組,需要這樣定義擴展點:

 
  1. <extension point="org.eclipse.wst.common.project.facet.core.facets">      
  2.   <project-facet-version>      
  3.     <group-member id="{string}"/> (0 or more)      
  4.   project-facet-version>      
  5. extension>  

and & or 是用來做邏輯判斷的,寫程序的都知道,這里不做介紹

下面是我們的FormGen的facet定義,為了讓我們創建的項目是一個Java EE項目,這里我們設置FormGen Core依賴jst.web facet. FormGen Ext facet需要建立在 FormGen Core的基礎上

xml 代碼
 
  1. <extension point="org.eclipse.wst.common.project.facet.core.facets">  
  2.   
  3.   <project-facet-version id="formgen.core" version="1.0">  
  4.     <constraint>  
  5.       <requires facet="jst.web" version="2.2,2.3,2.4"/>  
  6.     constraint>  
  7.   project-facet>  
  8.   
  9.   <project-facet-version id="formgen.ext" version="1.0">  
  10.     <constraint>  
  11.       <requires facet="formgen.core" version="1.0"/>  
  12.     constraint>  
  13.   project-facet>  
  14.      
  15. extension>  


實現Action
經過了上面的設置之后,運行插件,在新建工程向導里面選擇FormGen Core會出現錯誤提示信息,這是因為我們還沒有實現對應的Action,這里所說的Action是指facet所要執行的操作,這里有三種類型的action:INSTALL, UNINSTALL, and VERSION_CHANGE,下面的工作就是實現FormGen Core的action

下面是action對應的擴展點設置格式:

xml 代碼
 
  1. <extension point="org.eclipse.wst.common.project.facet.core.facets">  
  2.   <action id="{string}" facet="{string}" version="{version.expr}" type="INSTALL|UNINSTALL|VERSION_CHANGE">  
  3.     <delegate class="{class:org.eclipse.wst.common.project.facet.core.IDelegate}"/>  
  4.     <property name="{string}" value="{string}"/> (0 or more)   
  5.   action>  
  6. extension>  


下面我們對上述設置進行一下說明:
version屬性可以是單個值也可以是表達式,如果action使用所有的facet,那么不設置

id屬性可選,如果不制定,系統將以"[facet-id]#[version-expression]#[action-type](#[prop-name]=[prop-value])*"格式創建一個, 為了可讀性,最好自己制定id

在action內部還可以在project-facet-version元素內部中使用,如果是這樣的話,那么facet和version屬性將被忽略,如果同一個action delegate實現被多個facet 版本使用,那么最好在外面單獨設置一個action節點,這樣系統會進行優化

對于VERSION_CHANGE類型的Action而言, 那么制定了version信息之后,其行為將會收到一些限制, 我們只需要在action下的property中制定from.versions屬性即可,其值可以是單個,也可以是表達式

我們的FormGen Core的action要做兩件事:(1)copy formgen-core.jar 到項目的WEB-INF/lib 目錄下;(2)將FormGen servlet添加到web.xml中.而FormGen Ext會將copy formgen-ext.jar 到WEB-INF/lib 目錄下

xml 代碼
 
  1. <extension point="org.eclipse.wst.common.project.facet.core.facets">  
  2.   
  3.   <project-facet-version facet="formgen.core" version="1.0">  
  4.     <action type="INSTALL">  
  5.       <delegate class="com.formgen.eclipse.FormGenCoreFacetInstallDelegate"/>  
  6.     action>  
  7.   project-facet-version>  
  8.   
  9.   <project-facet-version facet="formgen.ext" version="1.0">  
  10.     <action type="INSTALL">  
  11.       <delegate class="com.formgen.eclipse.FormGenExtFacetInstallDelegate"/>  
  12.     action>  
  13.   project-facet-version>  
  14.      
  15. extension>  

 

java 代碼
 
  1. package com.formgen.eclipse;   
  2.   
  3. import org.eclipse.core.resources.IFolder;   
  4. import org.eclipse.core.resources.IProject;   
  5. import org.eclipse.core.runtime.CoreException;   
  6. import org.eclipse.core.runtime.IProgressMonitor;   
  7. import org.eclipse.core.runtime.Path;   
  8. import org.eclipse.wst.common.project.facet.core.IDelegate;   
  9. import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;   
  10.   
  11. public final class FormGenCoreFacetInstallDelegate implements IDelegate   
  12. {   
  13.     public void execute( final IProject pj,   
  14.                          final IProjectFacetVersion fv,   
  15.                          final Object config,   
  16.                          final IProgressMonitor monitor )   
  17.   
  18.         throws CoreException   
  19.   
  20.     {   
  21.         monitor.beginTask( ""2 );   
  22.   
  23.         try  
  24.         {   
  25.             final IFolder webInfLib = Utils.getWebInfLibDir( pj );   
  26.   
  27.             Utils.copyFromPlugin( new Path( "libs/formgen-core.jar" ),   
  28.                                   webInfLib.getFile( "formgen-core.jar" ) );   
  29.   
  30.             monitor.worked( 1 );   
  31.   
  32.             Utils.registerFormGenServlet( pj );   
  33.   
  34.             monitor.worked( 1 );   
  35.         }   
  36.         finally  
  37.         {   
  38.             monitor.done();   
  39.         }   
  40.     }   
  41. }   
  42.   

java 代碼

 
  1. package com.formgen.eclipse;   
  2.   
  3. import org.eclipse.core.resources.IFolder;   
  4. import org.eclipse.core.resources.IProject;   
  5. import org.eclipse.core.runtime.CoreException;   
  6. import org.eclipse.core.runtime.IProgressMonitor;   
  7. import org.eclipse.core.runtime.Path;   
  8. import org.eclipse.wst.common.project.facet.core.IDelegate;   
  9. import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;   
  10.   
  11. public final class FormGenExtFacetInstallDelegate implements IDelegate   
  12. {   
  13.     public void execute( final IProject pj,   
  14.                          final IProjectFacetVersion fv,   
  15.                          final Object config,   
  16.                          final IProgressMonitor monitor )   
  17.   
  18.         throws CoreException   
  19.   
  20.     {   
  21.         monitor.beginTask( ""1 );   
  22.   
  23.         try  
  24.         {   
  25.             final IFolder webInfLib = Utils.getWebInfLibDir( pj );   
  26.   
  27.             Utils.copyFromPlugin( new Path( "libs/formgen-ext.jar" ),   
  28.                                   webInfLib.getFile( "formgen-ext.jar" ) );   
  29.   
  30.             monitor.worked( 1 );   
  31.         }   
  32.         finally  
  33.         {   
  34.             monitor.done();   
  35.         }   
  36.   
  37.     }   
  38. }   
  39.   

 


 

xml 代碼
 
  1. <extension point="org.eclipse.wst.common.project.facet.core.facets">  
  2.   <category id="{string}">  
  3.     <label>{string}label>  
  4.     <description>{string}description> (optional)   
  5.   category>  
  6.   <project-facet>  
  7.     <category>{string}category> (optional)   
  8.   project-facet>  
  9. extension>  


設置如下:
 

xml 代碼
 
  1. <extension point="org.eclipse.wst.common.project.facet.core.facets">  
  2.   
  3.   <category id="formgen.category">  
  4.     <label>FormGenlabel>  
  5.     <description>Enables generation of HTML forms based on XML definition files.description>  
  6.   category>  
  7.   
  8.   <project-facet id="formgen.core">  
  9.     <category>formgen.categorycategory>  
  10.   project-facet>  
  11.   
  12.   <project-facet id="formgen.ext">  
  13.     <category>formgen.categorycategory>  
  14.   project-facet>  
  15.   
  16. extension>  


效果如圖

 


安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢
日本不卡高清视频| 亚洲免费观看高清完整| 色综合www| 免费成人三级| 亚洲ab电影| 香蕉综合视频| 亚洲美女网站| 日韩精品三区四区| 国产精品亚洲午夜一区二区三区 | 91中文字幕精品永久在线| 久久影院100000精品| 久久精品欧美一区| 国产日韩免费| 极品少妇xxxx精品少妇偷拍| 成人av动漫在线| 国产欧美久久久精品影院| 亚洲欧美日韩一区二区三区在线观看| 亚洲毛片av在线| 91国偷自产一区二区三区成为亚洲经典| 精品视频在线看| 日韩精品在线播放| 欧美黑人国产人伦爽爽爽| 国产精品女主播| 性欧美精品孕妇| 97在线观看免费观看高清 | 亚洲日本中文字幕免费在线不卡| 国产香蕉97碰碰久久人人| 欧美风情在线观看| 国产精品老女人精品视频| 白白色视频在线| 日本h片在线| 成人在线超碰| 亚洲久久一区| av一二三不卡影片| 午夜精品福利一区二区蜜股av| 在线不卡中文字幕| 欧美日本高清一区| 免费视频二区| 97在线超碰| 欧美人妖在线| 国产综合色视频| 亚洲精品国产品国语在线app| 911精品产国品一二三产区| 欧美电影免费观看网站| a∨色狠狠一区二区三区| 国产不卡av在线免费观看| 中文字幕精品在线不卡| 91天堂素人约啪| 亚洲欧美日韩一区二区| 正在播放亚洲一区| 久久久亚洲影院| 一级毛片在线播放| 偷拍视频一区二区三区| 欧美一区二区三区高清视频| 麻豆一区二区在线| 亚洲电影一级黄| 在线日韩中文字幕| 在线观看av片| 91国产精品| 日韩电影免费在线观看网站| 亚洲一二三级电影| 日韩在线观看免费高清完整版| 狠狠干在线视频| 小说区图片区亚洲| 日韩中文字幕不卡| 日韩欧美第一页| 国自产精品手机在线观看视频| 69av亚洲| 国产精品入口久久| 91麻豆产精品久久久久久 | 欧美日韩另类在线| 欧美极品美女电影一区| 亚洲婷婷噜噜| 欧美成熟视频| 亚洲观看高清完整版在线观看| 另类图片亚洲另类| 在线观看a级片| 激情av一区| 欧美日韩在线另类| 国产成人精品一区| 国产精品久久久久77777丨| 石原莉奈一区二区三区在线观看 | 中文字幕日韩视频| 国产一二在线观看| 成人中文在线| 综合久久久久久| 大胆人体色综合| 亚洲区欧洲区| 亚洲韩日在线| 欧美日韩一区二区三区在线| av电影资源| 噜噜噜狠狠夜夜躁精品仙踪林| 国产91富婆露脸刺激对白| 亚洲国产精品久久久久久| 亚洲高清福利| 久久中文字幕av| 亚洲成人动漫精品| 国产精品偷伦视频免费观看国产| 欧美国产日韩电影| 福利电影一区二区| 中文字幕精品av| a在线视频v视频| 精品一区二区免费看| 亚洲精品美女视频| 不卡av免费观看| 精品一区二区三区在线观看| 国产丝袜一区视频在线观看| 超碰最新在线| 久久精品国产在热久久| 日韩精品高清视频| 国精一区二区三区| 国产一区二区三区黄视频| 伊人久久大香线蕉av一区二区| 8x8ⅹ拨牐拨牐拨牐在线观看| 蜜臀精品久久久久久蜜臀| 亚洲国产日韩欧美在线动漫| 在线免费观看a视频| 久久99精品久久久久久国产越南| 亚洲国产精品一区二区三区| 午夜成年人在线免费视频| 国内精品视频一区二区三区八戒| 亚洲欧美一区二区三区情侣bbw| 123区在线| 不卡一区在线观看| 久久久久久久久久国产精品| 欧美1区2区3| 午夜视频在线观看一区| 青檬在线电视剧在线观看| 欧美在线1区| 精品国产乱码久久久久久老虎| 欧美另类tv| 2024国产精品| 国产拍精品一二三| 欧美在线黄色| 亚洲精品久久久久中文字幕欢迎你| 9999精品成人免费毛片在线看| 成人97人人超碰人人99| 欧美亚洲成人xxx| 不卡中文一二三区| 欧美一区二区三区婷婷月色| av小说在线播放| 国产日韩欧美精品在线| 国产专区欧美专区| 日韩视频三区| www.欧美精品| 欧洲在线一区| 91精品国产乱| 日本在线视频一区二区| 亚洲天堂免费看| 九色视频网站在线观看| 国产精一区二区三区| 日本亚洲精品在线观看| 欧美另类亚洲| 日韩中文在线视频| 欧美亚洲高清一区二区三区不卡| 欧美女孩性生活视频| 欧美激情成人动漫| 国产精品国产a级| 在线国产一区二区三区| 精品中文字幕一区二区| 国产精品久久久久999| 9久re热视频在线精品| 欧美精品videos另类日本| 成人激情开心网| 亚洲女成人图区| 菁菁伊人国产精品| 亚洲精品在线网站| 6080亚洲理论片在线观看| 欧美日韩第一区日日骚| 高清av一区二区三区| 疯狂做受xxxx欧美肥白少妇| 久草在线资源福利站| 精品久久久久久国产91| 三级中文字幕在线观看| 精品久久久香蕉免费精品视频| 一色桃子av在线| 亚洲精品中文在线观看| 在线观看wwwxxxx| 午夜精品在线视频一区| 搞黄网站在线看| 亚洲午夜国产一区99re久久| 182在线播放| 欧美性猛交xxxxxx富婆| 国产色99精品9i| 亚洲成年人在线播放| 欧美男同视频网| 欧美日本高清一区| 欧美亚洲自偷自偷| 国产福利在线播放| 99在线视频精品| 黄色网址在线免费| 欧美性猛交xxxx偷拍洗澡| 欧美日韩五区| 亚洲国产精品va在线观看黑人| 国产欧美日韩精品一区二区免费 | 国产精品亚洲综合在线观看| 日韩一级精品视频在线观看| 伊人久久大香线蕉| 欧美日韩成人在线播放| 日韩—二三区免费观看av|