WEB开发网      濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌涘☉姗堟敾闁告瑥绻橀弻锝夊箣閿濆棭妫勯梺鍝勵儎缁舵岸寮诲☉妯锋婵鐗嗘慨娑氱磽娴e搫鈻堢紒鐘崇墵瀵顓奸崼顐n€囬梻浣告啞閹歌顫濋妸鈺佺闁靛繒濮Σ鍫熺箾閸℃ê濮囨い搴㈡崌濮婃椽宕ㄦ繝鍌氼潓閻庢鍠栭悥濂哥嵁閺嶎厼绠涙い鏃傚亾閿涘繘姊洪崨濠冨瘷闁告洦鍋呴悾顒勬⒒娴e摜鏋冩い顐㈩樀瀹曞綊宕稿Δ鈧粻鏍煃閸濆嫬鏆婇柛瀣崌瀹曠兘顢橀悙鎰╁灪閵囧嫰濡烽敂鍓х杽濠殿喖锕ら幖顐f櫏闂佹悶鍎滈埀顒勫磻閹炬緞鏃堝川椤撶媴绱遍梻浣筋潐瀹曟﹢顢氳椤㈠﹪姊绘担鍛婂暈婵炶绠撳畷褰掑箥椤斿彞绗夊┑鐐村灟閸ㄦ椽鎮¢弴鐔翠簻闁规澘澧庣粙鑽ょ磼閳ь剟宕橀埞澶哥盎闁硅壈鎻槐鏇熸櫏婵犳鍠栭敃銊モ枍閿濆洤鍨濇繛鍡楃箚閺嬪酣鏌熼鍡楀暙椤ユ劙姊婚崒娆戭槮闁硅姤绮嶉幈銊╂偨缁嬭法顦┑鐐叉閸旀帞鎹㈤崱娑欑厽闁靛繆鎳氶崷顓犵焼閻庯綆鍋佹禍婊堟煛瀹ュ啫濮€濠㈣锕㈤弻娑㈡倷椤忓嫬顫囧┑顔硷攻濡炶棄螞閸愵煁褰掑Χ閸℃瑢濮囬梺鐟板槻閹虫﹢鐛幘璇茬鐎广儱鎷嬪Λ婊堟⒒閸屾瑧顦︽繝鈧柆宥呯?闁靛牆顦埀顒€鍟村畷鍗炩槈濡厧骞堥梻浣告贡閸庛倝銆冮崱娑欏亗闁哄洢鍨洪悡娑㈡煕閵夛絽鍔氬┑锛勫帶闇夋繝濠傚閻鏌曢崶褍顏紒鐘崇洴閺佹劙宕ㄩ鐘垫綁闂傚倷绀侀幖顐e緞閸ヮ剙鐒垫い鎺嗗亾缁剧虎鍙冨鎶藉幢濞戞瑥鈧敻鏌ㄥ┑鍡涱€楀褌鍗抽弻锟犲幢濞嗗繆鏋呴梺鍝勭潤閸曨偒鍤ゅ┑鐐叉閸ㄧ敻宕哄畝鍕拺闂傚牊绋掗ˉ鐐烘偨椤栨稑娴柨婵堝仜閳规垹鈧綆鍋勬禍妤呮煙閼圭増褰х紒鎻掋偢閹粙鎳¢妶鍥╋紳婵炶揪缍€椤曟牕鈻撻弴銏$厱闁靛ǹ鍎虫禒銏°亜椤愩垻绠崇紒杈ㄥ笒铻i悹鍥ф▕閳ь剚鎸剧槐鎾存媴閸︻厸妲堝銈嗗灥閹冲酣鍩㈤幘娲绘晣闁绘劏鏅滈弬鈧俊鐐€栧褰掑几婵犳艾绀傛い鎺戝€荤壕濂告煟濡寧鐝€规洖鐭傞弻鏇㈠幢閺囩媭妲銈庡亝缁诲牓鐛崶銊﹀闁稿繐顦伴悗鍛婄節閻㈤潧啸闁轰礁鎲¢幈銊╊敇閵忕姷锛涢梺瑙勫礃缁夘喛銇愰幒鎾存珳闂佹悶鍎弬鍌炲焵椤掆偓閿曨亪寮婚敓鐘茬劦妞ゆ帊鑳堕々鐑芥倵閿濆骸浜為柛妯挎閳规垿鍩ラ崱妤冧画濡炪倖鍨堕悷鈺佺暦閻㈢鍋撻敐搴″幋闁稿鎸鹃幉鎾礋椤掆偓娴犫晠姊虹粙鎸庡攭缂侇噣绠栭幃姗€宕橀瑙f嫼缂傚倷鐒﹂埣銈夘敂閸曢潧娈ㄩ梺鍓插亝濞叉牠鎮块鈧弻锝夊箛椤旇姤姣勭紒鐐劤閵堟悂寮诲☉姘勃闁绘劦鍓涘▓銈夋煛娴e摜澧﹂柟顔筋殘閹叉挳宕熼鍌ゆО缂傚倷绶¢崰鏍崲濡寧顥ら梺璇查叄濞佳囧箺濠婂吘娑㈩敍閻愬鍘靛銈嗙墪濡梻绮堟担鍦浄妞ゆ洍鍋撻柟顔筋殔閳绘捇宕归鐣屼邯闂備胶绮悧婊堝储瑜旈幃楣冩倻閼恒儱浜楅柟鐓庣摠钃辨い顐㈢Т閳规垿鍩ラ崱妤冧户闁荤姭鍋撻柨鏇炲€归崐鐢碘偓瑙勬礀濞层劎澹曟禒瀣厱閻忕偛澧介幊鍛存煕閺傝法校闁靛洤瀚版俊鎼佸Ψ閿旂粯顥i梻浣风串缁插墽鎹㈤崼銉у祦闁哄秲鍔嶆刊瀛樻叏濠靛棙婀伴柟韫嵆濮婄粯鎷呴搹鐟扮濠碘槅鍋勯崯纾嬫"闂佽宕橀褍效閺屻儲鍊甸柨婵嗛閺嬬喖鏌i幘璺烘瀾濞e洤锕俊鍫曞磼濮橆偄顥氶梻鍌欒兌缁垶銆冮崨顓囨稑螖閸涱厾鍘洪梺鍦亾缁剁偤寮崼婵嗙獩濡炪倖妫侀~澶屸偓姘偢濮婃椽鎳¢妶鍛呫垺绻涢懠顒€鈻堥柛鈹惧亾濡炪倖甯掗崯顖炴偟椤忓牊鐓熼煫鍥э工娴滈箖姊婚崒姘偓椋庣矆娓氣偓楠炴牠顢曢敃鈧粻鐘绘煙闁箑骞楅柛娆忕箻閺岀喓绱掗姀鐘崇亶闂佺ǹ顑傞弲鐘诲蓟閿濆围閹艰揪绱曟禒婊勭箾鐎涙ḿ鐭婄紓宥咃躬瀵鎮㈤崗鐓庘偓缁樹繆椤栨繂浜归柣锝嗘そ濮婃椽宕崟顒€娅ょ紓浣筋嚙閻楀棝锝炶箛鎾佹椽顢旈崪浣诡棃婵犵數鍋為崹鍫曟嚌妤e啨鈧倿宕崟銊︽杸闂佸疇妫勫Λ妤佺濠靛鐓熼柣鏂垮级濞呭﹪鏌曢崱鏇狀槮闁宠閰i獮鎺楀籍閸屾稒绶梻鍌欑閹碱偊宕锕€纾瑰┑鐘崇閸庡﹪鏌涢鐘插姕闁抽攱鍨堕幈銊╂偡閻楀牊鎮欓梺璇茬箰瀵墎鎹㈠☉娆愬闁告劖褰冮顐c亜閳哄啫鍘撮柡灞诲姂瀵挳鎮欏ù瀣壕鐟滅増甯楅崑鍌炴煛閸ャ儱鐏柣鎾崇箰閳规垿鎮欓懠顑胯檸闂佸憡鏌i崐婵嬪蓟濞戙垹鐓涢悗锝庡墰钃辨俊鐐€戦崝濠囧磿閻㈢ǹ绠栨繛鍡樻尭缁狙囨煙鐎涙ḿ绠ユ繛鍏肩娣囧﹪濡堕崶顬儵鏌涚€n剙浠遍柡浣稿暣婵偓闁靛牆鍟犻崑鎾存媴缁洘鐎婚梺鍦亾濞兼瑥鈻撻幇鐗堚拺闁告劕寮堕幆鍫熴亜閹存繃鍠橀柣娑卞櫍婵偓闁靛牆妫岄幏濠氭⒑缁嬫寧婀伴柣鐕傚缁﹪鎮ч崼娑楃盎濡炪倖鍔戦崺鍕i幖浣圭厽闁挎繂鎳庡Σ濠氭懚閿濆鐓犳繛鏉戭儐濞呭洭鏌i幘鎰佸剰妞ゎ亜鍟存俊鍫曞幢濮楀棙鈷栭梻浣芥硶閸犲棝宕曢懠顒傜焿鐎广儱鐗勬禍褰掓煙閻戞ɑ灏甸柛妯兼暬濮婅櫣绱掑Ο铏逛桓闁藉啴浜堕幃妯跨疀閿濆懎绠归梻鍥ь槹缁绘繃绻濋崒姘缂備礁顦遍崕銈夊箞閵婏妇绡€闁告侗鍣禒鈺冪磽娴d粙鍝洪悽顖涘笩閻忔帡姊洪幆褏绠婚柍褜鍓氱粙鎺椼€佸鈧濠氬磼濞嗘垵濡介柣搴g懗閸忕姴鎼鍏煎緞婵犲嫭鐓f繝鐢靛仦閸ㄥ墎鍒掓惔銏㈩洸闂侇剙绉甸埛鎺懨归敐鍛暈闁哥喓鍋炵换娑氭嫚瑜忛悾鐢碘偓瑙勬礀缂嶅﹪寮婚崱妤婂悑闁告侗鍨伴獮鍫ユ⒒娴d警鏀伴柟娲讳邯濮婁粙宕熼娑樹簵濠电偛妫欓幐濠氭偂閻樺磭绠鹃柡澶嬪焾閸庢劖绻涢崨顓熷櫣闂囧鏌eΟ铏癸紞闁活厼锕弻宥囨喆閸曨偆浼岄梺鎼炲姂缁犳牠骞冨▎鎾村癄濠㈣泛顦崹婵嬫⒒閸屾瑦绁版い鏇熺墵瀹曟澘螖閸涱偀鍋撻崘顔煎窛闁哄鍨归崣鈧┑鐘灱閸╂牠宕濋弴鐘典笉闁规儼濮ら悡娆撴煙椤栧棗鑻▓鍫曟偡濠婂嫭绶叉繛灞傚妿濡叉劙骞樼拠鑼紲濠电偛妫欓崹鑲╃玻濡ゅ懏鈷戦柛婵勫劚鏍¢梺缁橆殘婵炩偓闁靛棔绶氬浠嬵敇閻愯尙鐛╅梻浣告贡閳峰牓宕㈡禒瀣柧闁挎繂顦伴埛鎴犵磼鐎n厽纭剁紒鐘冲▕閺屾稑螣閻樺弶鍣烘い鎰矙閺岋綁骞囬鍓х槇缂備浇顕уΛ娆撳Φ閸曨垰鍐€闁靛ě鍛帓闂佹眹鍩勯崹杈╃矙閹烘梹宕叉繛鎴欏灩瀹告繃銇勯幘璺烘瀻闁哄濮撮埞鎴︻敊绾嘲濮涚紓渚囧櫘閸ㄥ爼鐛箛娑樺窛閻庢稒锚娴狀參姊绘笟鍥у伎缂佺姵鍨甸埢鎾斥攽閸垻锛濋梺绋挎湰閻燂妇绮婇悧鍫涗簻闁哄洤妫楀ú銈囧瑜版帗鐓曟い顓熷灥濞呮﹢鏌涢妶鍡樼缂佽鲸鎸婚幏鍛嫻椤栨粎绐楃紓鍌欒濡狙囧磻閹剧粯鈷掑ù锝堫潐閸嬬娀鏌涙惔顔肩仸鐎规洘绻傞濂稿川椤忓懐鈧椽姊洪幖鐐插姶闁告挻宀搁崺娑㈠箣閻樼數锛滈柣搴秵閸嬪嫰顢氬⿰鍕瘈闁逞屽墴楠炲秹顢欓崜褝绱查梺璇插嚱缂嶅棝宕戦崨顓犳殾鐎光偓閳ь剟鍩€椤掑喚娼愭繛鎻掔箻瀹曡绂掔€n亞鐣烘繛瀵稿Т椤戝懎顔忓┑鍡忔斀闁绘ɑ褰冮鈺傤殽閻愭惌娈滄慨濠冩そ閹兘寮堕幐搴♀偓顖炴⒑娴兼瑧绉靛ù婊庝簻閻i鎲撮崟顓犵槇濠殿喗锕╅崜娑㈠储閹扮増鈷戦柛婵嗗閸屻劑鏌涢妸锔姐仢闁诡噯绻濇俊鐑芥晜閽樺浼庢繝纰樻閸ㄤ即鎮樺┑瀣亗闁规壆澧楅悡鐔兼煙閹规劖纭鹃柡瀣洴閺岋綁骞欓崘銊ゅ枈閻庤娲栭悥鍏间繆閻戣棄唯闁靛鍎涢幋鐘电=闁稿本鐟чˇ锔姐亜閹存繄澧曢柣锝囧厴閹粙宕归顐g稐闂備礁婀遍崕銈咁潖閼姐倕顥氶柛蹇涙?缁诲棙銇勯弽銊х畵濞存粌缍婇弻锝夋晲閸噥浠╃紓浣介哺閹稿骞忛崨瀛樻優闁荤喐澹嗛鑲╃磽閸屾瑦绁版い鏇嗗洦鍋嬮柛鈩冪⊕閸嬧晝鈧懓瀚伴崑濠傖缚閵娾晜鐓冪憸婊堝礈濮橆厾鈹嶅┑鐘插亞濞兼壆鈧厜鍋撳┑鐘插敪閵娧呯=闁稿本鐟︾粊鏉款渻閺夋垶鎲搁柟骞垮灲瀹曠厧鈹戦幇顓犵▉缂傚倸鍊烽悞锕佹懌婵犳鍨伴顓犳閹烘垟妲堟慨妤€妫楅崜鏉库攽閻愯尙澧涢柛鏃€鐟ラ~蹇撁洪鍕啇闂佺粯鍔栬ぐ鍐€栭崱娑欌拺闁告稑饪村▓鏃堟煕閻旈攱鍋ラ柟顕€绠栭幃婊呯驳鐎n偅娅栭梻浣虹帛閸旀ḿ浜稿▎鎰垫闁搞儺鍓氶埛鎴︽煟閻旂厧浜伴柛銈囧枎閳规垿顢氶埀顒€岣胯閸┿垽骞樺ǎ顒€浜濋梺鍛婂姀閺備線骞忛搹鍦=闁稿本鐟ч崝宥夋嫅闁秵鐓冮梺鍨儏濞搭噣鏌$仦鐣屝㈤柣锝忕節楠炲秹顢欑亸鏍у緧闂佽瀛╅鏍闯椤曗偓瀹曟垶绻濋崒婊勬闂佸湱鍎ら〃鍡涘磹閻戣姤鍊甸柣銏㈡瑜版帞宓侀柛顐犲劜閳锋帒霉閿濆洦鍤€闁崇粯娲熼弻鈩冪瑹閸パ勭彎閻庤娲橀崹鍧楃嵁濡偐纾兼俊顖滃帶楠炴劙姊绘担鍛婂暈濞撴碍顨婂畷鏉款潩鐠鸿櫣鐤囬梺鍛婁緱閸犳洜鎹㈤崱娑欑厱婵炲棗娴氬Σ绋库攽椤斿吋鍠橀柟钘夌埣閺佹劖寰勭€n亙鍝楁繝鐢靛仦閸ㄥ墎鏁幒鎾存珷闁哄被鍎查悡娑㈡煕鐏炵虎娈斿ù婊堢畺濮婂宕掑顑藉亾閻戣姤鍤勯柛鎾茬閸ㄦ繃銇勯弽顐粶缂佲偓婢舵劖鐓涢柛銉㈡櫅閳ь剨缍侀幃銏ゅ传閵壯呮闂備焦鎮堕崕婊堝礃閳轰礁濮冮梻鍌氬€烽懗鍓佸垝椤栫偛钃熼柕濞炬櫆閸庡秵绻濋棃娑卞剰缂備讲鏅犻弻銈夊箒閹烘垵濮屾繛瀛樼矋缁捇寮婚敓鐘茬闁靛⿵绠戦ˇ鈺侇渻閵堝啫鍔氭い锔炬暬瀵鈽夐姀鐘愁棟闁荤姴娲︾粊鎾磻閹炬枼鏀介悗锝庝簽椤旀垿姊洪崜鎻掍簼婵炲弶锕㈠畷鎰版倻閼恒儳鍘介梺鐟邦嚟閸嬪秶绱撳鑸电厱婵せ鍋撳ù婊嗘硾椤繐煤椤忓嫪绱堕梺鍛婃处閸撴瑩宕戝澶嬧拺闁告稑锕ラ悡銉╂煛閸偄澧寸€殿喗鐓″畷濂稿即閵婏附娅栭梻浣虹帛閸旀洟顢氶銏犲偍闁告鍋愰弨浠嬫煟閹邦剙绾фい銉︾矌缁辨帞绱掑Ο铏诡儌缂備緡鍠氱划顖滄崲濠靛棭娼╂い鎾跺Т楠炴劙姊虹拠鑼闁稿鍠栧鏌ヮ敃閿濆棙鐝¢梻浣筋嚙濮橈箓锝炴径濞掓椽鏁冮崒姘憋紱婵犵數濮撮崐濠氬汲閿曞倹鐓熼柡鍐ㄥ€甸幏锟犳煛娴e憡顥㈤柡灞界Х椤т線鏌涢幘瀵告噰闁糕斂鍨归鍏煎緞鐎n偅鐝抽梻浣规偠閸庮噣寮插┑瀣櫖婵犻潧娲ㄧ粻楣冨级閸繂鈷旂紒瀣吹閹叉悂寮堕崹顔芥缂備礁鍊哥粔褰掑箖濞嗘搩鏁嗛柛灞剧矌濡插洭姊绘笟鈧ḿ褎顨ヨ箛鏇炵筏闁告挆鍕幑闂佺粯鍔﹂崗娆愮濠婂牊鐓欓悗娑欋缚缁犳牜鈧懓鎲$换鍕閹烘鏁婇柛鎾楀啰顐奸梻渚€娼ч悧鐐电礊娴e摜鏆︽慨妞诲亾闁糕晪绻濆畷姗€濡搁妷褜鍚嬮梻鍌氬€峰ù鍥敋瑜忛埀顒佺▓閺呮繄鍒掑▎鎾崇闁瑰濮寸粻鐢告煟閻樺厖鑸柛鏂垮缁嬪顓奸崱妯哄伎濠碉紕鍋犻褎绂嶆ィ鍐┾拺闁告繂瀚~锕傛煕閺傝法鐒搁柛鈹垮劜瀵板嫭绻涢姀銏犳瀾鐎垫澘瀚伴幆鍌炲传閵夘灖鎴︽⒑闂堟稒鎼愰悗姘卞娣囧﹪骞栨担瑙勬珳闂佸憡渚楅崢鑹邦杺闂傚倸鍊峰ù鍥敋閺嶎厼绐楁俊銈呮噺閸嬶繝鏌嶉崫鍕櫡闁逞屽厸缁舵艾顕i鈧畷鐓庘攽閸偅效濠碉紕鍋戦崐鏍箰閼姐倖宕查柛鏇ㄥ幘閻棝鏌涢弴銊ョ仭闁抽攱甯¢弻娑氫沪閸撗勫櫗缂備椒鑳舵晶妤呭Φ閸曨垰鍗抽柣鏂挎惈閳峰矂鎮楃憴鍕;闁告鍟块锝嗙鐎e灚鏅濋梺闈涚墕濞村倸危缁嬪簱鏀介柣妯虹仛閺嗏晛鈹戦鑺ュ唉鐎规洘鍔栫换婵嗩潩椤掍浇绶㈤梻浣瑰濞叉牠宕愯ぐ鎺撳亗婵炲棙鍔戞禍婊堟煛瀹ュ骸浜滃ù鐘崇矊闇夋繝濠傛噹椤g厧菐閸パ嶈含闁瑰磭濮甸敍鎰攽閸℃﹩鍞查梻鍌欑閻ゅ洭锝炴径鎰瀭闁秆勵殔閺勩儵鏌涢弴銊ョ仩缂佲偓閸愵喗鐓忓┑鐐戝啯鍣烽柛瀣р偓鏂ユ斀闁挎稑瀚禍濂告煕婵炲灝鈧繂鐣烽姀掳鍋呴柛鎰╁妿椤ρ冣攽閳藉棗鐏熼悹鈧敃鍌氬惞闁哄洢鍨洪崑锝夋煕閵夛絽濡块柕鍫濈摠娣囧﹪骞撻幒鏂库叺闂佸搫鏈ú婵堢不濞戙垹鍗抽柣鎴濇缂嶅矂姊绘担绋挎毐闁圭⒈鍋婇獮濠呯疀濞戞瑥浜楅棅顐㈡处閹尖晠鎮㈤崱娑欏仯濡わ附瀵ч鐘差熆瑜庡ú鐔煎蓟濞戙垹绫嶉柍褜鍓熼獮鎰板箮閽樺鎽曞┑鐐村灟閸ㄧ懓螞濡崵绠鹃柛鈩冪懃娴滄儳螖閺冨倻纾介柛灞剧懄缁佹澘顪冪€涙ɑ鍊愭鐐村姈缁绘繂顫濋鍌ゅ數闂備礁鎲℃笟妤呭垂閹惰姤鍎楁繛鍡樻尭缁犲綊鎮楀☉娅虫垹浜搁鐏荤懓饪伴崼銏㈡毇闂佸搫鏈粙鎴﹀煘閹达箑绀嬫い鎰╁灩琚橀梻鍌欑劍濡炲潡宕㈡禒瀣濡わ絽鍟粻鐔兼煙闂傚鍔嶉柛瀣儔閺屾盯顢曢敐鍥╃暭闂佽崵鍠嗛崝鎴濐潖濞差亜浼犻柛鏇㈡涧閸擃喚绱撴担钘夌厫鐎光偓缁嬫鍤曞┑鐘崇閸嬪嫰鏌i幘铏崳妞わ富鍙冮幃宄扳堪閸愵亞顔婇梺杞扮贰閸犳牠鍩ユ径鎰潊闁挎稑瀚獮鎰版⒒娴e憡鍟炲〒姘殜瀹曟澘螖閸涱厾锛欓梺瑙勫婢ф鎮″☉銏″€堕柣鎰邦杺閸ゆ瑥鈹戦鐓庘偓鍧楀蓟閻旂⒈鏁婇柛婵嗗閸嬫挸鈹戦崱娆愭闂佸湱鍎ら崹鐔肺i崼鐔稿弿婵°倐鍋撴俊顐f⒒濡叉劙鏁撻敓锟� ---闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚敐澶婄闁挎繂鎲涢幘缁樼厱濠电姴鍊归崑銉╂煛鐏炶濮傜€殿噮鍣e畷濂告偄閸涘⿴鍞堕梻鍌欒兌鏋い鎴濇楠炴劙宕滆閸ㄦ繃銇勯幘璺轰汗婵℃彃鐗婃穱濠囶敍濮橆厽鍎撶紓浣哄Ь椤曆囧煘閹达附鍊烽柛娆忣槴閺嬫瑦绻涚€涙ḿ鐭嬬紒顔芥崌楠炲啴鍨鹃弬銉︻潔闂侀潧楠忕槐鏇㈠储閸楃偐鏀介柣鎰綑閻忋儳鈧娲﹂崜鐔兼偘椤斿槈鐔沸ч崶锔剧泿闂備礁鎼崐鍦偓绗涘泚澶愬閳╁啫寮挎繝鐢靛Т閹冲繘顢旈悩缁樼厵闁荤喐婢橀顓炩攽閳╁啯鍊愬┑锛勫厴閺佸倿骞嗚缁嬪牓姊婚崒姘偓鐑芥嚄閸洖绠犻柟鎹愵嚙閸氬綊鏌″搴″箹缂佺媭鍨堕弻銊╂偆閸屾稑顏�
开发学院软件开发Java 驾驭 Eclipse 功能部件:如何使用 Eclipse 功能部... 阅读

驾驭 Eclipse 功能部件:如何使用 Eclipse 功能部件来定制 Eclipse 行为

 2009-12-14 00:00:00 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鎯у⒔閹虫捇鈥旈崘顏佸亾閿濆簼绨绘い鎺嬪灪閵囧嫰骞囬姣挎捇鏌熸笟鍨妞ゎ偅绮撳畷鍗炍旈埀顒勭嵁婵犲嫮纾介柛灞捐壘閳ь剛鎳撻~婵嬪Ω閳轰胶鐤呯紓浣割儐椤戞瑩宕ョ€n喗鐓曟い鎰靛亝缁舵氨绱撻崘鈺傜婵﹤顭峰畷鎺戔枎閹搭厽袦婵犵數濮崑鎾绘⒑椤掆偓缁夌敻骞嗛悙鍝勭婵烇綆鍓欐俊鑲╃磼閹邦収娈滈柡灞糕偓鎰佸悑閹肩补鈧尙鏁栧┑鐐村灦閹稿摜绮旈悽绋课﹂柛鏇ㄥ灠閸愨偓濡炪倖鍔﹀鈧繛宀婁邯濮婅櫣绱掑Ο璇茶敿闂佺ǹ娴烽弫璇差嚕婵犳碍鏅插璺猴工瀹撳棝姊虹紒妯哄缂佷焦鎸冲畷鎴﹀箻鐠囧弶宓嶅銈嗘尰缁嬫垶绂嶉悙顒佸弿婵☆垳鍘ф禍楣冩倵濮樼偓瀚�闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鎯у⒔閹虫捇鈥旈崘顏佸亾閿濆簼绨奸柟鐧哥秮閺岋綁顢橀悙鎼闂侀潧妫欑敮鎺楋綖濠靛鏅查柛娑卞墮椤ユ艾鈹戞幊閸婃鎱ㄩ悜钘夌;婵炴垟鎳為崶顒佸仺缂佸瀵ч悗顒勬⒑閻熸澘鈷旂紒顕呭灦瀹曟垿骞囬悧鍫㈠幍缂傚倷鐒﹂敋缂佹う鍥ㄧ厓鐟滄粓宕滈敃鍌氱煑闁告劦鐓堝ḿ鏍煕濠靛棗鐝旂憸鏂跨暦閹偊妲炬繛瀵稿Т閵堢ǹ顫忛搹瑙勫珰闁肩⒈鍓涢澶愭⒑閻撳海绉虹紒鐘崇墵楠炲啯銈i崘鈺佲偓濠氭煢濡警妲奸柟鑺ユ礋濮婃椽妫冨☉杈€嗘繝纰樷偓铏枠鐎规洏鍨介幃浠嬪川婵炵偓瀚奸梺鑽ゅ枑閻熴儳鈧氨鍏樺畷顖濈疀濞戞瑧鍘遍梺缁樏壕顓熸櫠閻㈠憡鐓忛柛鈩冾殔閳ь剙婀辩紓鎾寸鐎n亜绐涙繝鐢靛Т鐎氼剟鐛崼銉︹拺缁绢厼鎳庨ˉ宥夋煙濞茶绨芥俊鍙夊姍瀵挳鎮㈤崫鍕ㄥ彏闂傚倸鍊搁崐椋庢濮橆兗缂氱憸宥囧弲闂侀潧鐗嗗ú鐘诲磻閹炬剚娼╂い鎰╁灩缁侇噣姊虹紒妯圭繁闁革綇缍侀悰顕€骞掗幊铏閸┾偓妞ゆ帒鍊绘稉宥夋煥濠靛棙顥犵紒鈾€鍋撻梻鍌氬€搁悧濠勭矙閹达箑姹叉繛鍡楃贩閻熸壋鍫柛顐犲灮閺嗩偊姊洪崫鍕効缂傚秳鐒﹂幈銊╁焵椤掑嫭鐓冮柟顖滃绾偓绻濋埀顒佹綇閵娧呭骄闂佸搫娲ㄩ崰鎾跺姬閳ь剙鈹戦鏂や緵闁告﹢绠栧畷銏ゆ偨閸涘ň鎷虹紓鍌欑劍閿氬┑顕嗙畵閺屾盯骞橀弶鎴濇懙闂佽鍠楄摫婵炵厧绻樻俊鎼佸Χ閸モ晝鏆伴梻鍌欑濠€杈╁垝椤栨粍鏆滈柣鎰摠濞呯姵绻涢幋鐐寸殤缁炬崘鍋愮槐鎾存媴鐠愵垳绱板┑鐐村絻椤曨參鍩€椤掑喚娼愭繛鍙夌墪閻g兘顢楅崘顏冪胺闂傚倷绀侀幉锟犲礉閺囥垹鐤柣妯款嚙缁€鍫熺節闂堟稓澧涚€规洖寮剁换娑㈠箣閻愩劎绱伴梺鍝勬濡鍩為幋锔藉亹閺夊牜鍋勯崢锟犳⒑鏉炴壆鍔嶉柣妤佺矌濡叉劙骞樼€涙ê顎撴繛瀵稿Т椤戝懘骞楅悽鍛娾拺闁革富鍘介崵鈧┑鐐茬湴閸婃繈骞冩ィ鍐╁€婚柦妯侯槺椤斿﹪姊虹憴鍕剹闁告ü绮欏畷鎾绘偨閸涘ň鎷洪梺鑽ゅ枑濠㈡﹢骞冩笟鈧弻锝夊箳閻愮數鏆ら梺璇″枟椤ㄥ﹪鐛弽銊﹀闁稿繐顦扮€氳棄鈹戦悙鑸靛涧缂佹彃娼″畷鏇㈠Χ婢跺﹤鎯為梺閫炲苯澧存慨濠冩そ楠炴牠鎮欏ù瀣壕闁哄稁鍘介崑瀣煟濡灝鍚圭€规挷绶氶悡顐﹀炊閵娧€濮囬梺鍝勬噺閹倿寮婚妸鈺傚亞闁稿本绋戦锟�濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌涘☉姗堟敾闁告瑥绻橀弻锝夊箣閿濆棭妫勯梺鍝勵儎缁舵岸寮诲☉妯锋婵鐗婇弫楣冩⒑閸涘﹦鎳冪紒缁樺灴婵$敻宕熼姘鳖啋闂佸憡顨堥崑鐔哥閼测晝纾藉ù锝呮惈椤庡矂鏌涢妸銉у煟鐎殿喛顕ч埥澶愬閻樼數鏉搁梻鍌氬€搁悧濠勭矙閹烘鍊堕柛顐犲劜閸婄敻鏌i悢鍝勵暭闁哥喓鍋熺槐鎺旀嫚閹绘帗娈绘繝纰夌磿閺佽鐣烽悢纰辨晬婵﹢纭搁崯瀣⒑鐠囨煡鍙勬繛浣冲洤绠烘繝濠傜墛閸嬧晛鈹戦崒姘暈闁抽攱鍨归惀顏堫敇閻愭潙顎涘┑鐐插悑閸旀牜鎹㈠☉銏″殤妞ゆ巻鍋撻柡瀣閵囧嫰顢曢姀銏㈩唺缂備浇椴哥敮鎺曠亽闂佸吋绁撮弲婊堝吹瀹€鍕拻濞撴埃鍋撻柍褜鍓涢崑娑㈡嚐椤栨稒娅犳い鏃囧亹閺嗗棝鏌ㄥ┑鍡欏闁告柨鐏氶妵鍕晜閻e苯寮ㄩ梺璇″櫙缁绘繃淇婇懜闈涚窞閻庯綆鍓欑敮楣冩⒒娴gǹ顥忛柛瀣噽閹广垽宕橀鑲╋紱濡炪倕绻愰幊鎰不閸撗€鍋撻悷鏉款棌闁哥姵娲滈懞杈ㄧ節濮橆剛鐣鹃梺缁樻煥閸氬鍩涢幋锔藉€甸柛锔诲幖鏍¢梺闈涙閸熸挳寮婚妶澶婄闁肩⒈鍓欓悡鐔兼倵鐟欏嫭绀冪紒璇茬墦瀵偊宕橀鑲╁姦濡炪倖甯掔€氀囧焵椤掍焦顥堢€规洘锕㈤、娆撳床婢诡垰娲﹂悡鏇㈡煃閳轰礁鏋ゆ繛鍫燂耿閺岋綁鎮㈢粙鍨潚濠殿喖锕ュ浠嬪箖閳╁啯鍎熼柍鈺佸暞閻︼綁姊绘担铏瑰笡闁绘娲熸俊鍓佺矙鐠恒劍娈鹃梺缁樺灦宀h法寮ч埀顒勬⒑閹肩偛鍔€闁告劑鍔庨妶顕€姊婚崒娆戠獢婵炰匠鍕垫闊洦娲橀~鏇㈡煛閸ャ儱鐏╅柛灞诲妽閵囧嫯绠涢幘璺侯杸闂佹娊鏀遍崹鍧楀蓟閻斿吋鍤冮柍杞版缁爼姊洪崨濠冣拹妞ゃ劌锕濠氭晸閻樻彃绐涘銈嗘閺侇喗鎱ㄩ崶鈺冪=濞达絿枪閳ь剙婀遍弫顕€鎮㈡俊鎾虫川閳ь剟娼ч幗婊呭婵傜ǹ绾ч柛顐g☉婵¤偐绱掑Δ浣侯暡缂佺粯鐩幃鈩冩償閿濆浂鍟嬮梻浣虹《閺備線宕滃┑瀣闁告稑鐡ㄩ悡銉╂倵閿濆懐浠涚紓宥嗩殜濮婂宕掑顑藉亾瀹勬噴褰掑炊瑜滃ù鏍煏婵炵偓娅嗛柛濠傛健閺屻劑寮撮悙娴嬪亾閸濄儳涓嶉柡灞诲劜閻撴洟鏌曟径妯烘灈濠⒀屽櫍閺岋紕鈧絺鏅濈粣鏃堟煛瀹€鈧崰鏍х暦濠婂棭妲鹃柣銏╁灡閻╊垶寮婚敓鐘插窛妞ゆ棁妫勯埀顒佸姍閺岋紕浠︾拠鎻掝潎闂佽鍠撻崐婵嗙暦閹烘垟妲堟慨妤€妫旂槐锟�闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鎯у⒔閹虫捇鈥旈崘顏佸亾閿濆簼绨绘い鎺嬪灪閵囧嫰骞囬姣挎捇鏌熸笟鍨妞ゎ偅绮撳畷鍗炍旈埀顒勭嵁婵犲嫮纾介柛灞捐壘閳ь剛鎳撻~婵嬪Ω閳轰胶鐤呯紓浣割儐椤戞瑩宕ョ€n喗鐓曟い鎰靛亝缁舵氨绱撻崘鈺傜婵﹤顭峰畷鎺戔枎閹搭厽袦婵犵數濮崑鎾绘⒑椤掆偓缁夌敻骞嗛悙鍝勭婵烇綆鍓欐俊鑲╃磼閹邦収娈滈柡灞糕偓鎰佸悑閹肩补鈧尙鏁栧┑鐐村灦閹稿摜绮旈悽绋课﹂柛鏇ㄥ灠閸愨偓濡炪倖鍔﹀鈧繛宀婁邯濮婅櫣绱掑Ο璇茶敿闂佺ǹ娴烽弫璇差嚕婵犳碍鏅插璺猴工瀹撳棝姊虹紒妯哄缂佷焦鎸冲畷鎴﹀箻鐠囧弶宓嶅銈嗘尰缁嬫垶绂嶉悙顒佸弿婵☆垳鍘ф禍楣冩倵濮樼偓瀚�  闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚敐澶婄闁挎繂鎲涢幘缁樼厱闁靛牆鎳庨顓㈡煛鐏炶鈧繂鐣烽锕€唯闁挎棁濮ら惁搴♀攽閻愬樊鍤熷┑顕€娼ч~婵嬪Ω瑜庨~鏇㈡煙閹规劦鍤欑痪鎯у悑缁绘盯宕卞Ο铏圭懆闂佸憡锕槐鏇犳閹惧鐟归柛銉戝嫮褰梻浣规偠閸斿矂鎮ラ崗闂寸箚闁圭虎鍠栫粈鍐┿亜閺冨倸甯剁紒鎰洴濮婃椽宕崟鍨ч梺鎼炲妼缂嶅﹤鐣烽姀鐘嗘椽顢旈崨顓涘亾閸偒娈介柣鎰皺娴犮垽鏌涢弮鈧喊宥夊Φ閸曨垱鏅滈悹鍥皺娴犳悂鎮楃憴鍕┛缂佺粯绻堥悰顔芥償閵婏箑娈熼梺闈涳紡閸愩劌顩梻鍌氬€搁オ鎾磻閸曨個娲晝閳ь剛鍙呴梺鍝勭Р閸斿孩鏅堕敓鐘斥拻闁稿本鐟︾粊鐗堛亜閺囧棗鎳夐崑鎾诲垂椤愩垺璇為悗瑙勬礃缁捇骞冮姀锛勯檮濠㈣泛顑囩粙渚€姊绘担鐟板姢缂佺粯鍔曢敃銏℃綇閳轰緡妫滈梺绋跨箻濡法鎹㈤崱妯镐簻闁哄秲鍔庨。鏌ユ煙椤栨氨澧涢柕鍥у椤㈡洟濮€閵忋垹濮辨繝娈垮枛閿曘儱顪冮挊澶屾殾闁绘垹鐡旈弫鍥ㄧ箾閹寸偟鎳冮柣婵嬩憾濮婄粯鎷呴崨闈涚秺椤㈡牠宕ㄩ鍥ㄧ☉閳规垹鈧綆浜為悾楣冩⒑闁偛鑻晶顖炴煏閸パ冾伂缂佺姵鐩獮妯尖偓鍨偠閸嬫劖绻濈喊妯活潑闁搞劍澹嗛埀顒佺濠㈡﹢锝炶箛鎾佹椽顢旈崟顏嗙倞闂備礁鎲″ú锕傚礈濮樿泛绠柛妤冨亹閺€浠嬫煟閹邦厼绲荤紒鐙欏啰鏆嗛柨婵嗘噺閸嬨儲顨ラ悙鏉戠伌濠殿喒鍋撻梺缁橈供閸嬪懘寮埀顒€鈹戦悩鍨毄濠殿喖顕埀顒佸嚬閸o絽顕i崼鏇炵濞达絽鍘滈幏娲⒑閸涘﹦绠撻悗姘煎幖椤斿繐鈹戦崱蹇旀杸濡炪倖姊归崕鎶藉储閹绢喗鐓欐い鏃囶嚙瀹撳棗鈹戦敍鍕幋闁糕晪绻濆畷鎺懳旀担鍓蹭紲濠电姷鏁搁崑鐘诲箵椤忓棗绶ゅù鐘差儏缁犺銇勯幇鈺佲偓鏍汲濠婂牊鍋i弶鐐村椤掔喖鏌i弬鎸庮棦闁哄矉缍侀幃銏犵暋閹殿喚娉块梻浣姐€€閸嬫捇鏌ゆ慨鎰偓妤冨婵傚憡鐓曢悘鐐靛亾閻ㄦ垹鈧稒绻傝灃婵°倕锕g花鐑芥煕濡も偓閸熷潡鎮鹃悜鑺ュ亗閹兼惌鍠楅崓鐢告⒑閹稿海绠撻柟鍐茬У缁旂喖寮撮姀鈾€鎷洪梺鍛婄箓鐎氼剟寮冲▎鎾寸厽婵°倐鍋撴俊顐g〒閸掓帡宕奸妷銉ь槰闂佸磭鎳撻妵妯艰姳婵犳碍顥婃い鎰╁灪閹兼劖绻涚€电ǹ鍘撮挊婵嬫煥閺囨浜鹃梻鍥ь槹缁绘繃绻濋崒婊冣叡闂佷紮绲惧浠嬪蓟閿涘嫪娌悹鍥ㄥ絻椤牓姊虹€圭媭娼愰柛銊ョ仢閻g兘宕¢悙鈺傤潔闂佺懓鍚€缁€浣圭閻愵兛绻嗛柕鍫濆€告禍鎯ь渻閵堝骸寮ㄩ柛搴☆煼绡撳〒姘e亾闁哄本鐩幃鈺佺暦閸パ€鎷版繝鐢靛Л閸嬫挸銆掑锝呬壕濠殿喖锕ㄥ▍锝囨閹烘嚦鐔煎即閻旈浼岄梺璇″枤閸忔ɑ淇婇悿顖fХ闂佺ǹ顑嗛幐鎼侊綖濠靛鍋傞幖娣灮娴滃墽绱撻崒娆戣窗闁哥姵姘ㄩ崚鎺楊敍閻愬弬褔鏌ㄥ┑鍡╂Ц缂佲偓閸愵喗鐓冮柛婵嗗閺嗘瑦顨ラ悙鑼濞e洤锕幃娆擃敂閸曘劌浜鹃柡宥庡幖缁€澶愭煙鏉堝墽鐣辩痪鎯х秺閺岋繝宕堕妷銉т患闂佸憡鍨规繛鈧鐐寸墪鑿愭い鎺嗗亾濠碘€茬矙閺岋綁骞樼捄鐑樼亪闂佺粯鎼╅崑濠傜暦閹偊妾ㄩ梺绋块缁绘﹢寮诲☉銏犵睄闁逞屽墰閸掓帡骞樼拠鑼舵憰闂佸搫娲㈤崹褰掓倷婵犲嫭鍠愮€广儱顦介弫鍌涖亜閹捐泛袥闁稿鎸搁埢鎾诲垂椤旂晫浜舵繝鐢靛仜閸氬鎮烽妸鈺傚€堕柟鐑橆殕閳锋垿鏌涘☉姗堝姛缂佺姵鎹囬幃妤€顫濋悡搴♀拤濡炪們鍊曢崐鍦崲濠靛牆鏋堝璺虹灱閿涚喖姊虹粙娆惧剱闁搞劌鐏濋悾鐑藉箛閺夎法顓洪梺鎸庢磵閸嬫捇鏌涢妸銉モ偓鍦崲濞戞﹩鍟呮い鏃囧吹閸戝綊姊虹粙娆惧劀缂佺粯绻堝璇差吋婢跺﹣绱堕梺鍛婃处閸撴瑥鈻嶉敐鍥╃=濞达絽鎼牎闂佺粯顨堟繛鈧€殿喛顕ч鍏煎緞婵犲嫬骞愬┑鐐舵彧缁蹭粙骞夐垾鏂ユ灁闁哄被鍎查埛鎴犵磼鐎n偄顕滈柟鐧哥秮閺屾盯鎮╁畷鍥р拰閻庢鍠栭…宄邦嚕閹绢喖顫呴柣姗€娼ч埀顒傚仱閹嘲饪伴崘顎倝鏌ゆウ鍧楀摵缂佺粯绻傞~婵嬵敇閻樻彃绠ラ梻鍌欑閹诧繝宕归鐐茬9闁哄稁鍋€閸嬫挸顫濋悙顒€顏�
核心提示:构建一个插件是很有趣的:您开始编写代码并创建您想要的工具,把插件拷贝到 Eclipse 或一个基于 Eclipse 的产品中的 \plupgins 目录下,驾驭 Eclipse 功能部件:如何使用 Eclipse 功能部件来定制 Eclipse 行为,这个插件在 Eclipse 运行期环境中就可以使用了,当再一次使用

构建一个插件是很有趣的:您开始编写代码并创建您想要的工具。把插件拷贝到 Eclipse 或一个基于 Eclipse 的产品中的 \plupgins 目录下,这个插件在 Eclipse 运行期环境中就可以使用了。当再一次使用 Eclipse 的时候,插件将被找到,而且经过平台的启动处理,它在运行期配置中将是可用的。

但是谁知道或者关心您的插件加入了进来?用户可以明白您提供的是什么工具吗?他们可以通过 Eclipse 来禁用、修补或者管理您的组件吗?答案显然是否定的。插件本身仅仅是一个插件,而不是与 Eclipse 平台完全集成的组件。

功能部件包装插件
如果没有功能部件,插件是难以驾驭的,通俗地说,不属于功能部件的插件是未被管理的插件。Eclipse 平台的启动过程包括一个配置的步骤。如果一个新的插件被拷贝到 \plugins 目录,或者以其他方式使 Eclipse 在启动的时候可以找到,配置过程会发现它,但只是通过将新插件的 splash 图标闪烁两次来通知您。Eclipse 之所以会发现新的插件,是因为存贮在 \.metadate\.config\platform 中的当前工作区的配置校验和发生了变化;由于您没有向平台提供一个可以引导用户做出配置修改的功能部件,Eclipse 也只能是通过 splash-flash来提示这一变化。将您的插件打包为一个(或两个)功能部件,您将获得如下好处:

在 Eclipse 的配置过程中列出您的组件(在 feature.xml 文件中)所要求的先决条件

使您的组件可以作为 Eclipse 配置的活动部分来管理

创建标记信息,让使用那些使用运行期环境的用户可以识别您的组件,并通过一个欢迎页面来告知用户您的功能部件所提供的功能(在关联到您的功能部件的 welcome.xml 文件中)

用 Eclipse 更新管理器可以对您的组件进行修改

不要等到您的插件开发完成后再打包为功能部件。反映在功能部件定义中的设计结果会影响您如何构建您的插件。例如,大多数的 Eclipse 组件都有 UI 功能部件和核心(不是 UI)功能部件。如果您的插件没有按这种方法进行划分,您可能会马上考虑重新设计它们。功能部件也可以用来自动编译处理被引用的插件。

主要功能部件标识一个产品(但是您有控制权)

虽然功能部件很多,但是当您启动 Eclipse 的时候,只有一个功能部件处于控制之下。这个主要功能部件决定了产品的标识和其他运行期行为,包括确定名字和与运行期平台相关联的图示,以及对所有插件默认属性值的重新定义选项。在后面的 定义您自己的全局属性中可以看到,这个功能强大的选项使您可以定制您自己的 Eclipse 设置。

功能部件构建插件(如果您允许它们)

插件开发环境(PDE)可以自动完成为完整的运行期环境准备功能部件和插件的大部分工作。参见 Eclipse.org 中文章的讨论 "PDE 生成插件"。这些基本的步骤在The Java Developer's Guide to Eclipse中也曾作为一个练习涉及到,遵循那个练习您可以构建并标识您已有的插件。可以说如果您有一个功能部件,并且了解 PDE 如何帮助您构建插件和功能部件,您就可以构建一个功能部件,然后让它去同时构建所有相关的插件。构建控制策略(bin.excludes 与 bin.includes)将在后面的 使用 PDE 构建功能部件的策略中讨论。这些策略是对 Eclipse.org 文章以及The Java Developer's Guide to Eclipse一书的补充。

平台配置管理

理解功能部件所需要条件有助于理解它们如何对活动配置中可用的内容进行管理。

启动过程

如果是一个刚解压缩的 Eclipse 平台,那么当您启动 eclipse.exe 的时候将会发生:

安装可能已经完成

如果一个工作区已经存在,那么会有一个 .metadata\.config\platform.cfg 配置文件。

如果您是以常规方式安装 Eclipse,您得运行 eclipse -initialize 命令来生成一个默认的初始化配置文件,放置在 eclipse\.config 目录下。这样当 Eclipse 以新的工作区启动时不再出现 Completing the install的图示。

找到 Java 运行期环境(JRE)。默认情况下,Eclipse 首先查找 exlipse\jre 子目录。如果没有找到,Eclipse 将查找在系统中注册的 Java 运行期环境。
注意:-vm dir-location 参数可以用到指定其他的 JRE。

配置被作为新的工作区的一部分创建出来。新的工作区通常没有任何的配置,所以您会在真正的 splash 图标之前看到一个图标,通知您安装设置完成。

处理那些注册到 Eclipse 的功能部件和插件,并创建在后面将会用于检测变化的校验和。这些功能部件和插件或者位于当前的 eclipse\features 目录和 eclipse\plugins 目录下,或者位于由链接文件指定的 eclipse\... 目录结构中。

一旦 Eclipse 启动,活动配置定义将包含在 .metadata\.config\platform.cfg 文件中。

链接文件如何扩展一个 Eclipse 安装设置

如果您已经使用了一段时间的 Eclipse 或者在您的配置中添加了哪怕只是一个新的插件,您肯定知道 Eclipse 是到 eclipse\features 目录和 eclipse\plugins 目录下去查找功能部件和插件的。不过您是否知道,Eclipse 也会到文件系统的其他位置去查找功能部件和插件?如果在 eclipse\links 目录下存在格式正确的链接文件,那么这些文件会被处理,相关联的功能部件和插件(包括没有相关功能部件的插件)在运行期配置中都会是可用的。

一个链接文件只是一个命名为 id.link 的任意文件,在这里 id 通常是正在被引用的根功能部件的 id。您可以在链接文件目标中定义不只一个功能部件,并且名字命名为 foo.link 也是可以接受的。给出一个包含如下内容的链接文件:

path=E:/Eclipse-2.1.1/installedFeatures/Examples

Eclipse 将会到指定的目录下去查找 eclipse\features 目录和 eclipse\plugins 目录,看是否有合法的功能部件和(或)插件。也就是说,目标目录必须包含一个 \eclipse 目录。如果找到,附加的功能部件和插件在运行期配置是将是可用的,如果链接文件是在工作区创建之后添加的,附加的功能部件和插件会作为新的 配置变更 来处理。

使用链接文件来定制您自己的 Eclipse 安装设置的策略将在本文稍后的 使用链接文件管理 Eclipse 安装设置中进行讨论。

配置更新――添加一个功能部件

如果一个新的功能部件及所用到的插件已经添加到已有的 \features 目录和 \plugins 目录下,或者通过一个链接文件注册到 Eclipse,校验和的变化将触发配置处理过程。这个处理在一个简单的 splash-flash之后进行。新的功能部件作为一个配置变更来处理,并且显示出一个配置变更的对话框。

例如,如果您打开一个标准的 Eclipse 解压缩环境的工作区,而后找到了 Eclipse Examples,您把它解压缩到与 Eclipse 同样的目录树中或者添加了一个链接文件来指明这个例子解压缩到了何处,将会出现一个如图1所示的对话框。

图 1. 配置变更对话框
驾驭 Eclipse 功能部件:如何使用 Eclipse 功能部件来定制 Eclipse 行为

所以,如果您看到类似于这样的一个对话框,那是因为在您运行一个安装配置程序的时,您自己或者其他人修改了 Eclipse 的配置,而平台发现了新的或者更新过的可用功能部件。如果条目可以被选中,您可以将这个变化添加到您当前的配置中。如果条目被禁用,说明存在配置上的问题,这个功能部件不能被添加进来。按下 Error Details 按钮可以查看有关配置问题的信息。

配置管理注解:

存在未决变更并不意味着您不得不马上接受它们,在相当一段时间内您完全可以不去理会它们,只需要取消对条目的选择,并点击 Finish即可。要在以后再添加它们,您可以选择  Help > Software Updates > Pending Changes... 来再次打开那个对话框。

已经被接受的变更在以后还可以禁用。打开 Install/Update 透视图,在 Install Configuration 视图中选中功能部件,然后在 Preview视图中选择 Disable 。禁用的功能部件还可以通过类似的步骤启用。在 Install Configuration视图中点击 Show Disabled Features图标可以显示被禁用的功能部件。

功能部件在运行期标识组件

Eclipse 允许标识活动产品,也可以选择标识运行期配置中的每一个功能部件。功能部件不是必须要标识出来,您可以不标识您所有的功能部件,但是您应该至少标识一个。

标识定义――插件的工作

添加标识的关键问题是要明白把标识的定义在哪里。您定义标识的是功能部件,但是标识的内容是来自于插件。或者插件与功能部件的 id 相同(默认的情形),或者插件在功能部件的定义中被明确标识(这是 Eclipse 2.1.1 的新增功能)。在 Eclipse 2.1 中,一个功能部件定义可以通过在 feature.xml 文件中指定属性 plugin=… 来定义其他插件。

插件包含了用于定义和提供标识内容的文件。

标识内容概要介绍

about.ini 控制文件定义了产品级和功能部件级的标识。产品标识必须正确包含以下两方面内容:

功能部件必须被定义为一个可能的主要功能部件,即在 feature.xml 定义文件中要包含 primary="true"。

功能部件必须被标识为活动的主要功能部件,在产品中通常是在 \eclipse 目录下的 install.ini 文件中的条目来设置。主要功能部件也可以在运行期通过使用 -feature featureId启动参数来定义。

理解功能部件标识的最简单的办法是去查看在 about.ini 控制文件中定义了哪些元素,以及它们在一个被标识的产品或功能部件中如何起作用。

图 2. 在 Eclipse 透视图中可用的标识内容
驾驭 Eclipse 功能部件:如何使用 Eclipse 功能部件来定制 Eclipse 行为

查看原图(大图)

以下几条仅用于产品标识:

windowImage

appName

aboutImage

其余条目在产品及功能部件标识过程中使用。

以百分号(%)开头的值在 about.properties 文件中解析。当一个功能部件是主要功能部件时,用 abouText 关键字定义的文本会在 About product 对话框中显示。当用户点击 Feature Details 按钮时,随后弹出的 About Features 对话框中也会显示这些本文内容。

功能部件被加入到运行期配置时,会打开 welcomePage 条目指定的欢迎页面,其后还可以通过选择 Eclipse 菜单选项 Help > Welcome... 打开的 Welcome 选择对话框打开这个欢迎页面。

构建一个可行的有标识的功能部件的最快速方法是克隆一个在 Eclipse 本身中可以找到的一个现有的功能部件。具有 org.eclipse.platform id 的功能部件和插件会提供功能部件标识和插件标识。在The Java Developer's Guide to Eclipse一书第34章练习7中有一个步骤详尽的指导说明。

在 Eclipse.org 的更新管理器子工程的开发资源中,您可以找到另外一些关于标识的详细说明。

使用 PDE 构建功能部件的策略

在The Java Developer's Guide to Eclipse一书中关于功能部件开发的章节和 Eclipse.org 的文章 "PDE 生成插件"中都对构建功能部件的过程进行了介绍,但是也还有一些其他的途径。当您理解了如何使用 PDE 来构建功能部件和相关联的插件之后,您可以让这些步骤自动完成。

由 PDE 实现的 Ant 目标

让我们从对 PDE 所提供功能概要介绍开始讲起。PDE 将为一个 plugin.xml 或 feature.xml 文件生成 build.xml 文件。Build.xml是一个 Ant 脚本,可以完成运行期平台的功能部件和插件所需要的不同任务。PDE 构建过程允许您生成下列构建目标中的一个或多个。

重要的功能部件构建目标:

build.jars为每一个引用到的插件调用 build.xml 文件中的 build.jars 任务。

build.update.jar 为每一个引用到的插件调用 build.xml 文件中的 build.update.jars 任务。同时会为功能部件创建一个 Update JAR。这是 Ant 脚本的默认目标。

build.sources为每一个引用到的插件调用 build.xml 文件中的 build.source 任务。

zip.distribution创建一个包含功能部件和引用到的插件所需要的所有文件的压缩文件。

refresh使 Eclipse 刷新功能部件工程及任何引用到的插件的工程。

重要的插件构建目标:

build.jars 为插件定义的每一个运行期 JAR 调用 build.xml 文件中的许多目标。被调用的目标的名字与运行期 JAR 文件的名字相同。这些目标编译 Java 代码并创建 JAR 文件,包含任何在源文件目录下的资源。

build.update.jar 将所有运行期插件目录下所有需要的文件压缩打包为一个名字为 plugin.id_version.jar 的文件,在这里 plugin.id 和 version 来自于 plugin.xml 文件。这是 Ant 脚本的默认目标。

build.sources基于给定的运行期 JAR 文件所定义的源文件目录,创建 Java 源文件的压缩包。

zip.plugin创建一个包含有插件所需要的所有内容的压缩包。

refresh使 Eclipse 刷新插件工程。

注意:在功能部件和插件的Ant 处理过程中,更新 JAR 或生成压缩包的处理过程中打包的文件,是运行期环境所需要的那些文件。这些内容在功能部件或插件的 build.properties 文件和在 plugin.xml 中定义的每一个插件的运行期 JAR 文件中,通过 bin.includes 或者 bin.excludes 条目来描述。

为了构建一个插件,您可能会指定 clean,build.sources,build.jars,zip.plugin,refresh。为了构建一个功能部件,您可能会指定 clean,build.sources,build.jars,zip.distribution,refresh。您或许会想要在开始时使用 clean 来强制重新生成所有结果,经常会有这种情况。尽管 Ant 处理过程将基于输入的变化重新执行所需要的步骤,但是有一些变化不会触发所有需要的处理过程。测试结果表明如果您改变了一个 Java 源文件,相应的源文件压缩包将会更新,但是类不会被重新编译,运行期 JAR 也不会被更新。所以安全起见,建议您先将输出结果清空,以保证您在重新构建后所使用的是对应于当前源文件的运行期版本。

讨论方案

为了进行讨论,我们先描述一下只有一个功能部件和插件时在运行期配置中需要的内容。

组件结构示例

组件类型 文件
功能部件feature.xml
feature_image.jpg
/license/license.html
/license/license.pdf
/plan/project-plan.doc
插件plugin.xml
/images/action.gif
/images/editor.gif
/src/co/pkg/id/action.java
/src/co/pkg/id/editor.java
/design-docs/plug-in.doc
/design-docs/editor.doc
正如您所看到的文件名,虽然这些文件大部分属于运行期环境,还是有一些文件不是您想要与其他人共享的(例如,您的设计文档)。

包含策略――指出所需要的部分

至少到刚开始时,最简单的方法是,在构建过程中将您要打包的部分作为在运行期配置中功能部件或插件的一部分而列出来。相应的 build.properties 文件分别如下所示:

build.properties 内容

组件 build.properties 文件内容
功能部件bin.includes = feature.xml,\
license/
插件source.runtime.jar = src/
bin.includes = plugin.xml,\
images/

排斥策略――指定不需要的或私有的部分

另一种方法是把您不想打包的部分在构建过程中作为功能部件或插件的一部分列出来。这不仅要包括您不想共享的文件,还要包括构建过程中创建的文件和目录(有一些是临时的)。这种方法用到的 build.properties 文件如下:

build.properties 内容

组件 build.properties 文件内容
功能部件bin.excludes = temp.folder/,\
com.ibm.master.lab.core_1.0.0.bin.dist.zip,\
.classpath,\
.project,\
build.xml,\
build.properties
插件bin.excludes = temp.folder/,\
bin/,\
.classpath,\
.project,\
build.xml,\
build.properties,\
makesrczip.xml,\
src/

如果给定功能部件或插件的 id 值为 com.your.feature.id 或者 com.your.plugin.id,那么您在使用排斥策略的时候还需要在文件中包括以下条目:

com.your.feature.id_1.0.0.bin.dist.zip,\
com.your.feature.id_1.0.0.jar,\
com.your.plugin.id_1.0.0.jar,\

zip 条目将使生成的组件压缩包不被 update JAR 或者组件压缩包自己所包含。JAR 条目将使生成的功能部件或插件的 update JAR 不被组件压缩包或者 update JAR 自己所包含。

当您的组件压缩包或者 update JAR 看起来比它应该的大小要大,或者在每次您进行编译时包的大小呈跳跃式增长,说明您应该执行以上步骤了。您需要在适当的功能部件或者插件的 build.properties 文件中加入以上条目来解决这个问题。

对文件或者结构变化的响应

除了以上提到的之外,当一个新的文件或目录添加到功能部件或者插件时,还有必需的响应需要考虑。我们的意思是您得让您的功能部件和插件能应付可能的改变,也就是说它们分别需要一个 feature.properties 文件和一个 plugin.properties 文件。当您用包含策略时,您需要给 .properties 文件添加一个适当的属性,如果是使用排斥策略的话就不用这样做了。

不论哪种方法,如果您把一个文件添加到一个目录,那么不需要做任何其他的改动。对于新添加的文件,如果使用的是包含策略,它会被发送处理,如果使用的是排斥策略,它将不会被发送处理。这实际上是您可能应该要考虑使用不同的目录来存放不同的文件的原因。例如,您的插件所用到的所有图片所在的目录应该被包含在内,而一个开发过程中存放插件的设计讨论或文档的目录则不然。

最坏的情形是当您忘记对 build.properties 进行更新时:会发生运行期失败或生成内容存在差错的产品。如果您使用包含策略,新加入的文件或目录在打包后是不可用的,这有可能会导致您的插件不能用或者显示出 Eclipse 默认的图标(红盒子)。如果是使用排斥策略添加新文件或目录,这些文件或目录的内容在打包过程中会被包含进来。根据您的风格选择适当的方法,从而把您忘记执行更新时的风险降到最低。这将取决于您所面临的主要问题:是功能部件或插件不能运行,还是其他人本不应该看到运行期目录下的文件。

组织功能部件

当您在开发您的工具时,您是否考虑到了需要多少个插件?答案是至少三个:一个是您的模型,也就是非 UI 的核心部分,一个是您的 UI 内容,还有一个或多个是用于提供帮助内容。如果您注意过,您会发现这是 Eclipse 本身的基本模式(jdt.core, jdt.ui, jdt.doc; debug.core, debug.ui;等等)。

这样划分的原因之一是,相对于不用于 UI 的插件来说,用于 UI 的插件在运行期需要不同的 Eclipse 组件的支持(org.eclipse.ui)。

包含其他功能部件

功能部件如果没有被其他功能部件包含,那么在 Eclipse 配置中都会被配置为根功能部件。默认情况下,根功能部件可以由用户在 Install/Update 透视图中禁用或启用,并且可以在 feature.xml 文件中确定一个更新 URL。当包含一个功能部件时,只有在根功能部件中的更新 URL 会被处理,否则只能通过 search-location 定义特别许可才可以。

通过包含功能部件,您可以管理包的组织结构。您可能会有多个功能部件,但只有一个做过标识,其余的或者是用来构成结构,或者是用来管理组件。请记住是根功能部件来定义更新的站点,尽管这个角色可以由功能部件委派给它所包含的功能部件,通过设置 search-location 属性值为 selfboth。

如果您正在构建一个基于 Eclipse 的产品,您可能希望您的一个功能部件来包含 Eclipse 功能部件树。对于标识这个产品来说这并不需要,但是您可以指定另外的更新站点(Eclipse 自己用的是 http://update.eclipse.org/updates),或者根本不指定更新站点,禁用基于 Web 的更新。

可选功能部件的角色

当将一个功能部件包含到另一个功能部件时,您可以选择是否把它设置为可选的。主要原因是创建这样的结构可以让用户根据他自己的需要来禁用您提供的组件的一部分。

当新的功能部件包含有可选功能部件,但那些可选功能部件并不存在时,Eclipse 的配置逻辑不允许添加这个新的功能部件。也就是说,如果适当的先决条件成立,可以使用可选功能部件来创建层结构。不过需要将这些层存贮在不同的目录树下,并且每层使用单独的链接文件。您可以添加到 Eclipse 配置以增加其功能的链接文件的没有数目上的限制。

让 Eclipse (或者任何基于 Eclipse 的产品)以您的方式工作

现在向您讲明了两点:指定的主要功能部件控制整个产品的标识和默认属性,Eclipse 可以在安装配置目录下或者任何一个链接的 Eclipse 目录结构下找到组件。这意味着您可以改变 Eclipse (存在相关风险,不过仅仅意味着您修改时需要小心!)。这些改变可以帮助您管理基于 Eclipse 的安装配置,并使之支持您个人所喜好的属性规则。

使用链接文件来管理 Eclipse 安装配置

您可能会希望能对环境进行更多的管理,而不是毫无选择地将所有的插件(我希望是引用到的功能部件)全部安装到您的 Eclipse 目录树下。如果您需要更新 Eclipse,实际上您并不想要另外再装一个新的 Eclipse 或者在列表中去查找您所想要的功能部件和插件。

下面是一种借助链接文件来组织您的 Eclipse 或者基于 Eclipse 的产品和构件的方法:

保持 Eclipse 或者基于 Eclipse 的产品是干净的。也就是说,不要把您的任何功能部件或者插件添加到 eclipse\features 和 eclipse\plugins 目录下。

在已有的 eclipse 目录下创建一个 eclipse\links 目录和一个 eclipse\links-out 目录。如果您用的是基于 Eclipse 的产品,那么可能已经存在 eclipse\links-out 目录。这个目录并不特殊,只是一个用来方便存放不用的链接文件的地方。

为您要添加到您的配置中的功能部件和插件创建一个或多个 add-ons 的目录。在这些目录下,创建一个 eclipse\features 和一个 eclipse\plugins 目录结构。

为每一个 add-ons 目录在 eclipse\links-out 目录下创建一个链接文件。将那些您当前要添加到您的活动配置中去的链接文件拷贝到 eclipse\links 目录。

例如,假定您将 Eclipse 解压缩到一个名为 Eclipse-2.1.1 的目录下,然后创建一个名为 CoolTools 的 add-ons 目录,也放在 Eclipse-2.1.1 目录下。在 CoolTools 目录下,您可以有多个目录,每个目录用于一个或一族您要添加到 Eclipse 的工具。您的目录结构可能会如图3所示。

图 3. Eclipse 的链接文件目录结构
驾驭 Eclipse 功能部件:如何使用 Eclipse 功能部件来定制 Eclipse 行为

EditorList.link 文件要包含下面其中一条(不能是全部)

path=D:/Eclipse-2.1.1/CoolTools/EditorList
path=D:\\Eclipse-2.1.1\\CoolTools\\EditorList

斜杠是一条(/)还是两条(\\)取决于目录结构。

确认条目不要以空格结尾,因为这样 Eclipse 会忽略它――我第一次用链接文件时用了好几个小时才弄明白这一点。

如果您使用一个新的工作区来启动 Eclipse,所有 Eclipse 自带的以及通过链接文件找到的功能部件和插件都是可用的。如果您要添加一个链接文件,并使用现有的工作区重新启动 Eclipse,Configuration Changes 对话框就会弹出。如果您删除了一个链接文件(很简单,只是把它移到 \links-out 目录下),配置的变化也会被 Eclipse 注意到,但您能看到的仅仅是 splash-flash。

实际上您不是必须将链接文件移入移出来控制配置,更好的办法是用 Install/Update 透视图来调整配置。当然,可以这样做的前提是您的插件都属于功能部件(看,这是另外一个需要功能部件的理由)。使用 Eclipse 进行配置的调整将以后面讨论。

使用 Install/Update 透视图来修改配置

根功能部件,以及任何定义为可选择的功能部件,都可以在当前配置中禁用。被禁用后,功能部件仍然可以被平台认出;它们只是不再包含在当前的运行期配置中。

前面我们谈及了将 Eclipse Examples 添加到活动配置中。添加后,我们可以使用 Install/Update 透视图来禁用它。如果您正打开一个包含有 Eclipse Examples 的 Eclipse 配置的 Install/Update 透视图,您看到的将如图4 所示。

图 4. 在 Install/Update 透视图中的 Eclipse Examples 功能部件
驾驭 Eclipse 功能部件:如何使用 Eclipse 功能部件来定制 Eclipse 行为

查看原图(大图)

在 Preview 视图中点击 Disable Now 按钮,您就可以将 Eclipse Examples 功能部件从运行期配置中临时移除。点击后,Eclipse 将提示您重新启动平台来使配置的修改生效。

Eclipse Examples 功能部件在当前配置中将不再可见(或者说不是活动的)。为了能再次看到这个功能部件并启用之,您需要在 Install Configuration 视图中点击 Show Disabled Features开关按钮(见图5)。

图 5. 在Install/Update 透视图中禁用 Eclipse Examples 功能部件
驾驭 Eclipse 功能部件:如何使用 Eclipse 功能部件来定制 Eclipse 行为

查看原图(大图)

由于 Eclipse Examples 功能部件是一个根功能部件,所以可以这样做。如果您在 Eclipse SDK 中浏览其他功能部件,您将发现它们在 Preview 视图中没有相应的 Disable Now按钮,这是因为它们被定义为必需的。

如果您用的是 Eclipse SDK,您应该会有默认配置的平台、JDT 和 PDE。如果您正在做一些插件的开发,但是您不需要 PDE——或者在一些情况下,您不是总需要 JDT——您只要对 Eclipse 做一个小的修改就可以禁用这些功能部件。打开 org.eclipse.platform.sdk.win32 功能部件的 feature.xml 文件,将以下几行修改为包含 optional="true" 属性。


清单 1. 禁用 PDE 和 JDT
<includes id="org.eclipse.platform.win32" version="2.1.1" match="equivalent"/> 
<includes id="org.eclipse.jdt" version="2.1.1" match="equivalent" optional="true"/> 
<includes id="org.eclipse.pde" version="2.1.0" match="equivalent" optional="true"/> 
<includes id="org.eclipse.platform.win32.source" version="2.1.1" match="equivalent" 
  optional="true"/> 
<includes id="org.eclipse.jdt.source" version="2.1.1" match="equivalent" optional="true"/> 

现在您可以在 Install Configuration 视图中选择这些功能部件并禁用它们。如果所有前面提到那些定义为可选择的功能部件都被禁用,平台依然可以运行。并且,您随时可以重新启用它们。图6 是 Install Configuration 视图中显示的被禁用的功能部件。

图 6. 禁用 Eclipse 多个的功能部件
驾驭 Eclipse 功能部件:如何使用 Eclipse 功能部件来定制 Eclipse 行为

查看原图(大图)

这些禁用/启用的设置都是仅对于当前工作区有效。您可以有另外的活动工作区,其中包含有部分或全部在当前工作区中被禁用的功能部件。

这个简单的例子说明了使用功能部件的优势(它们可以被禁用)和使用链接文件来将所有可能的功能部件添加到您的配置的意义所在。在一个给定的工作区中将您所不需要的功能部件禁用,这样就可以优化当前配置。

定义自己的全局属性

Eclipse 是一个优秀的工具,但是同任何工具一样,您得对它进行定制,它才能是完美的。工具提供了属性页面来让您改变工具的行为或可视化显示。最新统计,在 Eclipse 中有 62 个属性页面。几乎每次您使用到一个新工具,您都会发现有些选项您想要修改。但是当您使用多个工作空间时,或者是在一个团队的环境中工作,有一些选项需要与他人协调,这样就出现了如何在跨工作空间以及与他人协调工作时对选项进行最佳管理的问题。

Eclipse 提供了导入/导出属性的功能。在任何一个属性对话框中,您都可以将属性导出到一个 .epf 文件中。当使用其他工作区或与他人共享时,可以再次导入这个文件。您甚至可以将它添加到工程中与团队成员共享,以便每个人都可以得到标准的属性。

但是这样做会变得单调而乏味,并且如果您忘记了就麻烦了。在使用 Eclipse 或任何基于 Eclipse 的产品时,您应该意识到还有另外一种方法可以定义全局属性。您可以通过修改主要功能部件的 plugin_customization.ini 文件来定制属性的默认值。

您可以在 eclipse 目录下的 install.ini 文件中找到主要功能部件。例如,在标准的 Eclipse 解压缩中的 install.ini 的内容如下:


清单 2. 标准的 Eclipse 解压缩中的 install.ini 的内容
# install.ini 
# java.io.Properties file (ISO 8859-1 with "\" escapes) 
# This file does not need to be translated. 
# Required property "feature.default.id" contains the id of the primary feature 
# (the primary feature controls product branding, splash screens, and plug-in customization) 
feature.default.id=org.eclipse.platform 
# Required property "feature.default.application" contains id of the core 
# application that gets control on startup. For products with a UI, this 
# is always org.eclipse.ui.workbench; for "headless" products, this is product-specific. 
feature.default.application=org.eclipse.ui.workbench 

feature.default.id=… 指定了默认的主要功能部件。要注意的是,通过在启动 Eclipse 时使用 -feature 选项,可以把其他功能部件声明为是主要的。

同大部分功能部件控制和标识一样,实际的工作都是在功能部件相关联的插件中完成的。对于 Eclipse来说,这是一个 id 与功能部件相同的插件,org.eclipse.platform 插件。如果您仔细查看这个作为主要功能部件标识的插件,您将发现一个名为 plugin_customization.ini 的文件。这个文件的内容与导出属性的文件类似。当 Eclipse 启动时会读取这个文件,并用来指定所有默认的属性值,而不是去使用插件本身定义的那些值。这就使得产品,或者说是您,可以改变插件的行为。默认的 plugin_customization.ini 文件的内容只有一条:


清单 3. 默认的 plugin_customization.ini 文件
# plugin_customization.ini 
# sets default values for plug-in-specific preferences 
# keys are qualified by plug-in id 
# e.g., com.example.acmeplugin/myproperty=myvalue 
# java.io.Properties file (ISO 8859-1 with "\" escapes) 
# "%key" are externalized strings defined in plugin_customization.properties 
# This file does not need to be translated. 
# Property "org.eclipse.ui/defaultPerspectiveId" controls the 
# perspective that the workbench opens initially 
org.eclipse.ui/defaultPerspectiveId=org.eclipse.ui.resourcePerspective 

这一条目指定了打开新的工作区时以及当您关掉所有的透视图后关闭 Eclipse 时打开的透视图。如果您使用的基于 Eclipse 的产品,这个条目可能有所不同。

指定要包含的属性的过程比较费事,但至少您应该做如下步骤:

启动一个干净的工作区。

修改您想要改变的一个属性。

将属性导出到一个 .epf 文件。

在导出的文件中找到新的健值,并确定它是否反映了您刚刚所做的改变。

将一个或多个键的条目拷贝到标识插件(使用 Eclipse 时这个插件是 org.eclipse.platform)的 plugin_customization.ini 文件中。

测试结果,或者保留新的键,或者再试一次。

注意:如果您不习惯于去更新产品的 plugin_customization.ini 文件,您可以在其他位置创建一个这个文件的拷贝,在启动 Eclipse 或基于 Eclipse 的产品时使用参数来指定它。

eclipse -plugincustomization myCustomDefaults.ini 

全局属性示例

前面提到了一些相关技术的描述,并提出了对您可能希望包含到您定制的 plugin_customization.ini 文件中的一些值的建议,这里给出了示例属性重写,作为对前面两方面的内容的说明。

我们将把它们根据我定制的目的在逻辑上分为的几部分来介绍。您可以下载完全的 插件 customization.ini 文件。

视图栏默认是在底部,但我喜欢把它们放在顶部:
# View tabs at the bottom 
org.eclipse.ui.workbench/VIEW_TAB_POSITION=128 


新工作区打开时不打开欢迎页面,并且在关闭工作台时不再提示:
# No welcome dialog at open and no confirm on close 
org.eclipse.ui.workbench/WELCOME_DIALOG=false 
org.eclipse.ui.workbench/EXIT_PROMPT_ON_CLOSE_LAST_WINDOW=false 


在打开新工程向导所知的透视图时,禁用提示或其他动作:
# Never change to perspective required by new project wizard (no prompt) 
org.eclipse.ui.workbench/SWITCH_PERSPECTIVE_ON_PROJECT_CREATION=never 


定义另外的默认文本字体:
# Default text font (leaks into Java editor) 
# Note: you have to touch the font page and say OK/Apply (probable bug) 
org.eclipse.ui.workbench/org.eclipse.jface.textfont= 
 1|Lucida Console|9|1|WINDOWS|1|-15|0|0|0|700|0|0|0|0|3|2|1|49|Lucida Console; 


注意:字体属性条目比较特殊,对它的修改不会立即生效。如果您访问字体属性页,前面所定义的内容会显示出来,不过得在您选择了 OK 或者 Apply 之后才会生效。我不能让这个键保存下来用于 Java 文本字体。

预定义附加的 Java 编辑器任务标签:
# Add to the default JDT task tags (TODO should probably be left) 
org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.taskTags=TODO,Edu-Sol 


将对 Package Explorer 的双击默认设置为 Go Into 动作:
# Package Explorer GoInto on Double click 
org.eclipse.jdt.ui/packageview.doubleclick=packageview.gointo 


有一些没有定义属性页面的选项也是可以定制的。在完成对 UI 的标准设置后导出的 .epf 文件中,我发现有一些 JDT 的选项值是作为属性来保存的。

这个属性键是用于告知 JDT UI 它要读取属性并用来改变默认的 UI 行为:
# Tells JDT it does have some prefs to use (forces a read of these values) 
org.eclipse.jdt.ui/CustomFiltersActionGroup.org.eclipse.jdt.ui.PackageExplorer. 
 TAG_DUMMY_TO_TEST_EXISTENCE=storedViewPreferences 


注意:如果没有上面的这个属性键,接下来的两组设置将被忽略。

活动 Package Explorer 过滤器以属性值的形式保存:
# Package Explorer filter - standard JDT defaults + library filter 
org.eclipse.jdt.ui/org.eclipse.jdt.ui.PackageExplorer.LibraryFilter=true 
org.eclipse.jdt.ui/org.eclipse.jdt.ui.PackageExplorer_patternFilterId_.*=true 
org.eclipse.jdt.ui/org.eclipse.jdt.ui.PackageExplorer.PackageDeclarationFilter=true 
org.eclipse.jdt.ui/org.eclipse.jdt.ui.PackageExplorer_patternFilterId_*$*.class=true 
org.eclipse.jdt.ui/org.eclipse.jdt.internal.ui.PackageExplorer.EmptyInnerPackageFilter=true 


Outline 视图有一个显示选项,可以在活动的 JDT Java 编辑器中显示内容时减小树的深度。这个图标有一个悬浮帮助 Go Into Top Level Type,由下面这个属性项来控制: # Outline view GoInto Toggle when using JDT editor 
org.eclipse.jdt.ui/GoIntoTopLevelTypeAction.isChecked=true 


您可能会想要尝试为更多的属性指定新的默认值,使用前面描述的方法然后核对一下结果即可。您或许会希望在一个临时的工作区中做这些事情,达到修改的目的后,您可以按此去修改活动的主要功能部件的 plugin_customization.ini 文件(不要告诉任何人是我教您这样做的!)。并且要注意的是,您可能会发现其他一些键被忽略了,这种情况我也曾遇到过,因为字体是用于 JDT 的,因此这一条目加入到 plugin_customization.ini 文件后,在属性页中根本就不会体现出这种变化。

结束语

功能部件是 Eclipse 的幕后英雄--它们很重要,因为它们是 Eclipse 配置管理的组成部分,支持产品标识,并且它们是在 Eclipse 平台上构建定制解决方案的产品的一部分。使用功能部件您可以:

当您使用基于 Eclipse 的产品进行工作时,您可以根据功能部件标识鉴别出是谁提供了哪些不同的可用功能

对产品的标识可以帮助进一步定制 Eclipse

在插件开发环境中自动完成任务

通过禁用/启用根功能部件,或者使用 Install/Update 透视图来禁用/启用定义为可选的被包含的功能部件,您可以动态地改变给定工作区的配置

所以,使用功能部件吧,它可以帮助您自动完成构建插件的一些步骤,使用文中提到的自定义 install/link 文件组织方法,可以使您的 Eclipse 环境更加好用。

Tags:驾驭 Eclipse 功能

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接