锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 涓轟簡璇存槑闂錛屾垜鐗規剰鐨勮瀹氫袱涓瀯寤烘椂鍙傛暟:
1.architexa 娌℃湁瀵圭紪璇戝悗鐨勪唬鐮佹販娣?鍏堢敤java decompiler 鍙嶇紪璇戝嚭濡備笅鐨勭被:
2.淇敼RSECore綾葷殑鏂規硶:
2 {
3 if (!AccountStatusUtils.testAccountValid()) {
4 String email = AccountSettings.getStoredAccountEmail();
5 AccountSettings.getStoredAccountPassword();
6 if ((email != null) && (email.length() > 0))
7 AccountErrorMsgs.displayErr("Account Has Expired ");
8 return false;
9 }
10 return true;
11 }
12
2 {
3 return true;
4 }
3.淇敼ConnectAccountDialog綾葷殑浠g爜(鍙嶇紪璇戝悗鐨勪唬鐮佹湁鐐歸暱,榪欓噷涓嶅垪鍑轟簡)錛屾渶緇堟敼鎴愬涓嬪嵆鍙?
2 this.emailEntered = this.emailField.getText();
3 this.passwordEntered = this.passwordField.getText();
4
5 AccountConnection ac = new AccountConnection();
6 if (this.enableOnOK) ac.setMenuToDisable(!this.disableOnCancel);
7 super.okPressed();
8 }
緙栬瘧鍚庡皢涓婅堪涓や釜綾繪斁鍒板搴旂殑jar涓紝閲嶅惎eclipse.
4.鍦╝rchitexa鐨勮璇佸璇濇錛岃緭鍏ヤ換鎰廵mail鍜宲assword,architexa 灝嗛噸寤虹儲寮?
5.鍦ㄦ煇涓猨ava綾葷殑涓婁笅鏂囪彍鍗曚腑錛屽彲浠ョ湅鍒癘pen in Diagram 灝卞彲浠ョ敓鎴愮被鐨勫竷灞鍥撅紝綾誨浘鍜屽簭鍒楀浘浜?鍙互閫氳繃宸ュ叿鏍忎笂鐨刡utton鏉ヨ緭鍑哄浘褰?
涓嬮潰璐村嚑涓氳繃榪欎釜鎻掍歡鏋勬垚鐨勫浘錛屾璧忎笅
]]>
1.涓嬭澆
hudson鐨勫畼鏂圭綉绔?a target="_blank">https://hudson.dev.java.net/涓嬫彁渚涗簡涓嬭澆
2.瀹夎
hudson浠ar鍖呯殑鏂瑰紡鎻愪緵,鍥犳瀹夎鏂瑰紡鏋佸叾綆鍗曪紝鐩存帴鏀懼埌鏈嶅姟鍣ㄧ殑鐩稿簲鐩綍涓?榪欓噷鏀懼埌tomcat鐨剋ebapp涓?鍚姩鍚庯紝璁塊棶http://localhost:8088/hudson 鍙互榪涘叆hudson鐨勬帶鍒跺彴欏甸潰.
4.緇勭粐寰呮瀯寤虹殑欏圭洰
榪欓噷鎴戜滑鍒涘緩涓涓渶涓虹畝鍗曠殑浠誨姟.榪欎釜浠誨姟鐨勭洰鐨勬槸鏋勫緩涓涓爣鍑嗙殑java宸ョ▼錛屽皢鍏朵腑鐨勬簮鐮佺紪璇戯紝鎵撳寘絳?
鍥為【涓嬩竴鑸殑銆佹渶涓虹畝鍗曠殑寮鍙戞祦紼?寮鍙戜漢鍛樺紑鍙戜唬鐮侊紝鐒跺悗鍒╃敤璇稿ant,mvn絳夎礋璐f瀯寤虹郴緇?鐒跺悗鎵ц嫻嬭瘯,鏈鍚庡彂甯冨埌鏈嶅姟鍣ㄤ笂.閫氬父錛屾瘡涓」鐩兘浼氭湁涓涓畬鏁寸殑鑴氭湰鏉ヨ嚜鍔ㄥ寲鐨勫仛榪欎歡浜?濡備綍椹卞姩鑷姩鍖栬剼鏈殑鎵ц(浠涔堟椂闂寸偣,浠ヤ粈涔堥鐜?綆$悊鏋勫緩緇撴灉)錛屾槸hudson鎻愪緵緇欐垜浠殑鍔熻兘錛宧udson涓嶅叧娉ㄧ壒瀹氫竴嬈℃瀯寤虹殑鍐呴儴榪囩▼,榪欏hudson鏄忔槑鐨?鐩墠錛宧udson閫氳繃鎻掍歡鐨勬柟寮忥紝鎻愪緵浜嗗鍩轟簬ant 銆乵vn絳夊父瑙佹瀯寤哄伐鍏風殑鏀寔.鏈川涓婏紝hudson鏄竴涓換鍔$鐞嗗拰椹卞姩鎵ц宸ュ叿,鍙笉榪囷紝瀹冮┍鍔ㄧ殑杞歡寮鍙戞祦紼嬩腑鐨勬瀯寤虹瓑榪囩▼.
鍑嗗:瑙e喅鎴戜滑鐗瑰畾涓嬈℃瀯寤轟腑錛屽仛浠涔堢殑闂.
鍩轟簬嫻嬭瘯鐨勭洰鐨勶紝鎴戜滑鍒涘緩涓涓ず渚媕ava宸ョ▼,緇撴瀯濡備笅:
姝ら」鐩殑閲囩敤ant,鏋勫緩,ant鑴氭湰濡備笅:
<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." name="build.hudsondemo">
<!-- =================================
target: compile
================================= -->
<target name="compile" depends="prepare" description="compile the project to the bin">
<javac debug="true" destdir="${basedir}/bin">
<src path="${basedir}/src" />
<src path="${basedir}/test" />
<classpath>
<fileset dir="${basedir}/lib">
<include name="*.jar"/>
</fileset>
</classpath>
</javac>
</target>
<!-- =================================
target: jar
================================= -->
<target name="jar" depends="compile" description="jar the project">
<mkdir dir="${basedir}/target"/>
<jar destfile="${basedir}/target/hudsondemo_${common.version}.jar">
<fileset dir="${basedir}/bin" />
</jar>
</target>
<!-- =================================
target: prepare
================================= -->
<target name="prepare" depends="clean" description="prepare the jar to the lib">
<copy todir="${basedir}/lib">
<fileset dir="${common.libs.dir}">
<include name="*.jar"/>
</fileset>
</copy>
</target>
<!-- =================================
target: prepare
================================= -->
<target name="clean">
<delete dir="${basedir}/bin"></delete>
<delete dir="${basedir}/lib"></delete>
<mkdir dir="${basedir}/bin" />
<mkdir dir="${basedir}/lib" />
</target>
</project>
common.libs.dir 鎸囧嚭浠庝粈涔堜綅緗幏鍙栫紪璇戦」鐩墍闇瑕佺殑jar
common.version 鎸囧嚭鏋勫緩鐨刯ar鐨勭増鏈彿.
5.閰嶇疆hudson鐨勯氱敤閰嶇疆
鏍規嵁浣跨敤鎻掍歡鐨勫灝戯紝閫氱敤閰嶇疆鏁伴噺鍚岋紝瀵逛笂榪扮殑紺轟緥欏圭洰,鎴戜滑闇瑕侀厤緗?nbsp;ant 鍜宩dk(鍙?濡傛灉闇瑕佹寚瀹氱敤鐗瑰畾鐨刯dk鏋勫緩緋葷粺鐨勮瘽).
鐐瑰嚮hudson涓婚〉闈㈠彸涓婅鐨刴anger hudson,榪涘叆閰嶇疆欏甸潰,鏈夊欏歸厤緗彲浠ュ鐞嗭紝浣嗘槸鐩墠浠呬粎闇瑕佺敤鍒癝ystem configurate 鍔熻兘.鍦⊿ystem configurate欏甸潰錛屽彲浠ュ涓嬬殑閰嶇疆:
璐存鍥劇殑鐩殑鏄渶瑕佸叧娉ㄤ笅home directory榪欎釜閰嶇疆錛岄粯璁ゆ槸褰撳墠鐢ㄦ埛鐩綍涓嬬殑.hudson,鍙互鏇存敼錛屼竴鑸湪鐜鍙橀噺涓瀹氫竴涓狧USDON_HOME鍗沖彲錛屽悓鏃跺皢鍘熸湁鐩綍涓嬫枃浠禼opy鍒版柊鐩綍涓嬶紝閲嶅惎hudson鍗沖彲.涔熷彲浠ョ敤鍏朵粬鐨勬柟寮忥紝姣斿璁懼畾瀹瑰櫒鍙傛暟絳夋潵鎸囧畾.
涓婅堪閰嶇疆鍙栭粯璁ゆ棦鍙?
閰嶇疆jdk:
閰嶇疆ant:
6. 鍒涘緩鏋勫緩浠誨姟
hudson鑳芥彁渚涚殑鍔熻兘閮戒互浠誨姟瀛樺湪.鐐瑰嚮鍙充笂瑙掔殑new job,灝嗘瀯寤轟竴涓柊鐨勪換鍔?
杈撳叆浠誨姟鍚嶇О錛屽茍閫夋嫨絎簩欏?
閰嶇疆浠誨姟:瑙e喅濡備綍瀹夋帓鏋勫緩浠誨姟鐨勬墽琛岀殑闂.
棣栧厛錛屾垜浠渶瑕佹寚瀹氬浣曚繚鐣欐瀯寤哄巻鍙?涓縐嶆槸鍩轟簬鏃墮棿鐨勶紝淇濈暀澶氬皯澶╋紝涓縐嶆槸鍩轟簬嬈℃暟鐨勶紝淇濈暀鑷綋鍓嶅紑濮嬪灝戞浠ュ唴鐨?榪欓噷鎴戜滑閫夋嫨淇濈暀鏈鏂?嬈℃瀯寤?
鍐嶆錛屾垜浠渶瑕佹寚瀹氬埄鐢ㄤ粈涔堢増鏈琣nt鎵ц鏋勫緩錛屽悓鏃舵寚瀹氭瀯寤烘椂鍙傛暟.
ant version 鐗堟湰涓紝浣跨敤浜嗗湪閫氱敤閰嶇疆閮ㄥ垎閰嶇疆鐨刟nt.
targets 涓紝鎸囨槑浜嗭紝姣忔鏋勫緩鏃墮渶瑕佸畬鎴愮殑target,鍙互鎸囧畾澶氫釜target.
build file 鎸囨槑浜嗭紝浣跨敤浠涔堟牱鐨刟nt瀹屾垚瀹為檯鐨勬瀯寤鴻繃紼?
properties 鎸囨槑浜哸nt鑴氭湰涓殑浣跨敤鐨勮繍琛屾椂鍙傛暟.榪欎簺鍙傛暟鍙互浣跨敤鍙橀噺鏇挎崲,hudson 浼氳В鏋愬嚭瀹為檯鐨勫煎啀浼犵粰ant.
榪欏氨鏄繖涓換鍔″彲浠ユ墽琛岀殑鏈鍩烘湰閰嶇疆,淇濆瓨,騫剁偣鍑誨彸涓婅鐨刡uild new ,鍙互绔嬪嵆鎵ц涓涓瀯寤?鏋勫緩緇撴灉濡備笅:
綰㈣壊琛ㄧず澶辮觸鏋勫緩,濡傛灉澶辮觸錛屽彲浠ュ湪%HUDSON_HOME%\jobs\涓嬫煡鐪嬪搴斾換鍔℃瀯寤虹殑鏃ュ織鏉ユ帓鏌ラ棶棰?
8. 涓や釜鍙兘緇忓父闇瑕佸叧娉ㄧ殑閰嶇疆.
1.姣忎釜job鐨?workspace.
濡傛灉涓嶆寚瀹氱粷瀵硅礬寰勶紝閰嶇疆鐨刟nt絳夎剼鏈氨鏄浉瀵硅繖涓伐浣滅┖闂寸殑.鍦ㄤ笂闈㈢殑渚嬪瓙涓伐浣滅┖闂寸殑鐢ㄥ涓嶅ぇ錛屼絾鏄湪涓浜涘叾浠栫被鍨嬬殑鏋勫緩錛屾瘮濡備粠svn涓鍑轟唬鐮佹瀯寤烘椂錛岀敤澶勫氨浣撶幇鍑烘潵浜嗭紝鍙﹀,涓浜沨udson鐨勬彃浠訛紝鎵鍒╃敤鐨勬枃浠?鏋勫緩鑴氭湰鐢熸垚,榪欎簺鎻掍歡涓嶄細鍘誨叧娉ㄦ枃浠朵駭鐢燂紝鑰屾槸瀵硅繖浜涙枃浠跺仛浜屾澶勭悊)閮芥槸鏀懼埌宸ヤ綔絀洪棿鐨?宸ヤ綔絀洪棿鐩稿綋涓庢瀯寤虹郴緇熷拰hudson鐨勪竴涓氦嫻佷腑浠?鎺ㄨ崘鏄瘡涓」鐩湁鑷繁鐙珛鐨勫伐浣滅┖闂?
2.鑷姩鏋勫緩鐨勯鐜囪瀹?br />
涔熷氨鏄粈涔堟椂鍊欒Е鍙戞瀯寤猴紝涓夌鏂瑰紡:
褰撳埆鐨勯」鐩瀯寤哄畬姣曞悗鍙戠敓鏋勫緩
鍒╃敤cron琛ㄥ埌寮忔潵鎸囧畾棰戠巼,瀵筩ron琛ㄨ揪寮忎笉鐔熸倝鐨勮瘽錛屽彲浠ュ弬鑰僸uartz(hudson鍐呴儴浣跨敤鐨勮皟搴︽鏋?鐩稿叧鐨勬枃妗?
媯嫻媠cm(svn銆乧vs絳?鐨勭姸鎬侊紝濡傛灉媯嫻嬪埌鍙樺寲錛岃嚜鍔ㄥ彂鐢熸瀯寤?
鍊熷姪husdon,鍩烘湰鑳藉仛鍒版棤浜哄煎畧鏋勫緩鍜岄儴緗詫紝涓嶅皯鎻掍歡鍙互鍒╃敤錛屼篃鍙互寮鍙戣嚜宸辯殑鎻掍歡.涓婇潰鐨勪粎浠呮槸涓涓緥瀛愯屼笌錛屽鏋滆搴斿瀹為檯宸ヤ綔涓殑闂錛屽緱濂藉ソ鐮旂┒鎵嶈.
]]>
1.緙栧啓涓涓湇鍔★紝瀹炵幇濡備笅鐨勬帴鍙?/p>
public interface CommandProvider {
2 /**
3 Answer a string (may be as many lines as you like) with help
4 texts that explain the command.
5 */
6 public String getHelp();
7
8}
濡傛灉鎯沖畾涔塰ello鏂規硶,鍙互濡備笅瀹炵幇璇ユ帴鍙?
import java.util.Dictionary;
import java.util.Properties;
import org.eclipse.osgi.framework.console.CommandInterpreter;
import org.eclipse.osgi.framework.console.CommandProvider;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
public class Activator implements BundleActivator,CommandProvider {
BundleContext bundleContext=null;
public void start(BundleContext context) throws Exception {
System.out.println("start
" +context.getBundle().getLocation());
bundleContext=context;
context.registerService(CommandProvider.class.getName(), new AntherCommandProvider(), null);
Dictionary dictionary=new Properties();
dictionary.put(Constants.SERVICE_RANKING, 10);
context.registerService(CommandProvider.class.getName(), this,dictionary);
}
public void stop(BundleContext context) throws Exception {
System.out.println("end
" +context.getBundle().getLocation());
}
public String getHelp() {
return "you are using the help command";
}
public void _helloa(CommandInterpreter intp)
{
intp.println("helloa "+ this.getClass().getName());
}
public void _hello(CommandInterpreter intp) throws Exception {
intp.println("hello " + this.getClass().getName());
}
}
import org.eclipse.osgi.framework.console.CommandInterpreter;
import org.eclipse.osgi.framework.console.CommandProvider;
public class AntherCommandProvider implements CommandProvider {
public void _hello(CommandInterpreter intp)
{
intp.println("hello "+ this.getClass().getName());
}
public String getHelp() {
return null;
}
}
鍏朵腑,閫氳繃CommandInterpreter綾誨瀷鐨刵extArgument()鏂規硶鍙互榪唬鍑烘墍鏈夌殑鍛戒護鍙傛暟.
2.娉ㄥ唽鏈嶅姟
濡傛灉涓嶅皢璇ユ帴鍙f敞鍐屼負鏈嶅姟錛岃繖涓猦ello鍛戒護灝嗕笉浜х敓浠諱綍浣滅敤.娉ㄥ唽鐨勬湇鍔″悕縐板繀欏繪槸org.eclipse.osgi.framework.console.CommandProvider.
褰撶郴緇熶腑瀛樺湪澶氫釜姝ゆ帴鍙g殑瀹炵幇鏃?鍙互閫氳繃SERVICE_RANKING灞炴ф潵鍐沖畾浜嗗懡浠ゆ墽琛岀殑欏哄簭,鏃㈡湁鏈楂樺肩殑鏈嶅姟灝嗚浼樺厛鎵ц.榪欑鏂瑰紡鍙互閲嶈澆緋葷粺涓凡緇忓瓨鍦ㄧ殑鍚屽悕鏈嶅姟.
3.鎵ц鍛戒護
璇蜂粩緇嗕綋浼氳緭鍑虹粨鏋?br />
]]>
浠繪剰灞傛,鍙兘鏈夊涓ā鍧楁垨鑰呯粍浠舵瀯鎴愶紝涓嶅悓鐨勭粍浠墮棿錛岄厤緗殑綾誨瀷鍙兘涓鏍鳳紝浣嗘槸閰嶇疆鐨勬暟鎹笉涓鏍?閭d箞,濡傛灉鍦ㄩ厤緗煇涓ā鍧楁椂錛屼笉姣旇冭檻鍏朵粬妯″潡鐨勯厤緗儏鍐碉紝閭d箞榪欎釜妯″潡灝辨嫢鏈夊紑鍙戞椂鐨勭嫭绔嬫?褰撶粍浠惰闆嗘垚鍒板悓涓灞傛閮ㄧ講榪愯鏃訛紝閰嶇疆鐨勫悎騫跺拰閲嶇粍鏄竴涓棶棰?騫朵笖錛岀粍浠墮棿鍙兘瀛樺湪渚濊禆鍏崇郴,榪欑渚濊禆鍏崇郴鍚屾椂浜х敓浜嗕緷璧栫粍浠墮棿閰嶇疆鍔犺澆鐨勪紭鍏堢駭闂.
鎴愮啛鐨勮蔣浠訛紝涓鑸笉浼氱洿鎺ュ皢絎笁鏂圭殑杞歡闆嗘垚錛岃屾槸灝嗗叾灝佽鍚庡湪綰沖叆榪涙潵,絎笁鏂圭粍浠剁殑閰嶇疆寰寰涓嶅叿澶囬厤緗殑灞傛鍖栨垨鑰呮ā鍧楃嫭绔嬫?鍦ㄨ璁$涓夋柟緇勪歡鐨勯泦鎴愮瓥鐣ユ椂錛岄渶瑕佽冭檻浣垮叾鎷ユ湁涓婅堪涓ょ鑳藉姏.
瑙e喅涓婅堪闂錛屾柟寮忔湁寰堝縐?鎴戜滑璋堣姣旇緝瀹規槗瀹炵幇鐨勪竴縐?
榪欑瑙e喅鏂規鐨勫熀鏈濊礬濡備笅:
棣栧厛錛岃璁′竴涓壒瀹氱殑鎵╁睍鍚嶇О鐨勯厤緗枃浠?妯″潡閰嶇疆绱㈠紩鏂囦歡,MCIF,xml鏍煎紡)錛屾閰嶇疆鏂囦歡闈㈠悜鐨勬槸緇勪歡綰у埆錛屽嵆姣忎釜緇勪歡瀹氫箟鑷繁鐨凪CIF.MCIF涓畾涔夎嫢騫查厤緗被鍒?鍗沖悕縐扮┖闂?姣忎竴涓悕縐扮┖闂磋礋璐e畬鎴愪竴綾婚厤緗紝涓鑸?涓涓悕縐扮┖闂村搴斾竴涓厤緗幏鍙栨帴鍙?榪欎釜鍚嶇О絀洪棿涓粎浠呴厤緗墍鍏蟲敞鐨勯厤緗殑鏂囦歡鐨勭浉瀵逛綅緗?鐩稿姝CIF),榪欐牱錛屾渶澶у寲鐨勫噺灝戜簡涓嶅悓閰嶇疆鏂囦歡鏍煎紡瀵筂CIF鐨勫獎鍝?
姣忎竴涓狹CIF鐨勬牴鍏冪礌鎷ユ湁涓涓猵arent灞炴?鎸囧悜浜嗕笂涓灞傛,鍚屼竴灞傛鐨凪CIF鐨刾arent灞炴ч兘鐩稿悓.閫氳繃parent灞炴э紝閰嶇疆鐨勫眰嬈″寲灝變笉鏄棶棰樹簡.
MCIF鏈変袱涓壒孌婄殑鍚嶇О絀洪棿:
1.register 瀹氫箟浜嗘墍鏀寔鐨勫悕縐扮┖闂村強鍏跺搴旂殑閰嶇疆瑙f瀽鍣?榪欐牱,姝ら厤緗鏋跺氨鍙互鍏佽瀵瑰悕縐扮┖闂磋繘琛屾墿灞?
2.depends 瀹氫箟浜嗗悓涓灞傛鐨勬ā鍧楅棿鐨勪緷璧栧叧緋?榪欎釜鏄彲閫夌殑錛屽鏋滄病鏈夊疄鐜版垨鑰呴厤緗紝鍚屼竴灞傛鐨刴odule鍗充負騫寵鐨?
褰撶郴緇熷惎鍔ㄦ椂,鎵弿鎵鏈夌殑MCIF,騫舵牴鎹畃arent灞炴цВ鏋愬嚭涓涓眰嬈″叧緋?瀵規瘡涓涓眰嬈′笅module,鍙傝冪浉搴旂殑depends璁劇疆瀹氫箟鍑轟竴涓緷璧栧叧緋?
褰撹姹傛煇鐗瑰畾鐨勯厤緗椂,鏍規嵁涓婅堪鐨勪袱涓叧緋誨畬鎴愰厤緗殑緇勫悎錛屽茍榪斿洖緇欎嬌鐢ㄨ?
鍏徃鏈榪戠殑閲嶆瀯涓紝鍩轟簬榪欎釜鎬濇兂寮鍙戠殑閰嶇疆灝忔鏋訛紝寰堝ソ瀹屾垚浜嗗灞傛錛屽緇勪歡鐨勯厤緗鐩栭棶棰?閰嶇疆鐩稿浠ュ墠鏇存竻鏅般佺畝鍗曪紝閰嶇疆榪囩▼涓殑鍏蟲敞鐐瑰ぇ澶у噺灝?
]]>
闀夸箙浠ユ潵錛岀湅鍒漢鐨刡log涓嶅皯,铏界劧鏈夋繁搴︾殑鍘熷垱涓嶅,紜篃緇欎簡鎴戣帿澶х殑甯姪,鏈潃鍙栦簬鏂?鍥為浜庢柉鐨勭簿紲?鍐沖畾涔熷湪緗戜笂閫夋嫨涓鐗囦俊鎵嬫秱楦︿箣鍦?鍑犵粡鏂熼厡,鏈緇堟暡瀹氫簡blogjava,甯屾湜鑳藉皢榪欎釜blog鍧氭寔涓嬪幓,瑙佽瘉涓涓皹涓栬糠閫斿皬鍗掔殑鎴愰暱鍘嗙▼.
甯屾湜涓嶈嚦浜庤檸澶磋泧灝?that't all!