構建 XStream 有問題?
有可能發現 XStream 構建失敗,報告org.w3c.dom.TypeInfo的NoClassDefFoundError錯誤。實際上,構建幾乎就成功了,但是 XStream 的 Ant 構建腳本用<junitreport>任務生成 JUnit 測試結果的 HTML 報告。這個工作使用 XSLT 轉換,所以觸發了前面我在初始配置一節中提到過的 xerces-j2 包中的 bug。 [cruise@fcvm ~]$cd src/xstream[cruise@fcvm xstream]$ant libraryBuildfile: build.xml compile: [mkdir] Created dir: /home/cruise/src/xstream/build/java [echo] Java version used for compile: 1.4.2_08 [javac] Compiling 150 source files to /home/cruise/src/xstream/bui ld/java[...]library: BUILD SUCCESSFUL Total time: 1 minute 44 seconds [cruise@fcvm xstream]$
而且,在添加新項目時,需要找到用來構建源和清理其中制品的目標的名稱。必須把這個信息放在 config.xml 文件中。
現在應當做好準備,可以讓 CruiseControl 自動執行這個構建了。只要啟動 CruiseControl,然后坐下來等待就可以了:
[cruise@fcvm xstream]$cd[cruise@fcvm ~]$java -jar \ pkg/cruisecontrol-2.2.1/main/dist/cruisecontrol.jar[cc]Aug-24 20:09:31 Main - CruiseControl Version 2.2.1 [cc]Aug-24 20:09:32 trolController- projectName = [xstream] [cc]Aug-24 20:09:32 trolController- No previously serialized project f ound: /home/cruise/xstream [cc]Aug-24 20:09:32 Project - Project xstream: reading settings from config file [/home/cruise/config.xml] [cc]Aug-24 20:09:32 BuildQueue - BuildQueue started [cc]Aug-24 20:09:32 Project - Project xstream starting [cc]Aug-24 20:09:32 Project - Project xstream: idle [cc]Aug-24 20:09:32 Project - Project xstream started [cc]Aug-24 20:09:32 Project - Project xstream: next build in 1 hours [cc]Aug-24 20:09:32 Project - Project xstream: waiting for next time to build [cc]Aug-24 21:09:33 Project - Project xstream: in build queue [cc]Aug-24 21:09:33 BuildQueue - now adding to the thread queue: xs tream [cc]Aug-24 21:09:33 Project - Project xstream: reading settings from config file [/home/cruise/config.xml] [cc]Aug-24 21:09:33 Project - Project xstream: bootstrapping [cc]Aug-24 21:09:33 Project - Project xstream: checking for mod ifications [cc]Aug-24 21:09:59 Project - Project xstream: No modifications found, build not necessary. [cc]Aug-24 21:09:59 Project - Project xstream: Building anyway, since build was explicitly forced. [cc]Aug-24 21:09:59 Project - Project xstream: now building Buildfile: build.xml [cc]Aug-24 21:11:29 Project - Project xstream: merging accumula ted log files [cc]Aug-24 21:11:30 Project - Project xstream: build successful [cc]Aug-24 21:11:30 Project - Project xstream: publishing build results [cc]Aug-24 21:11:30 Project - Project xstream: idle [cc]Aug-24 21:11:30 Project - Project xstream: next build in 1 hours [cc]Aug-24 21:11:30 Project - Project xstream: waiting for next time to build[stop CruiseControl using Ctrl-C][cruise@fcvm ~]$
讓 CruiseControl 一直運行
現在是讓 CruiseControl 運行了,但是還不能讓它在沒人參與的情況下運行。它目前在一個終端窗口中運行,所以需要讓cruise用戶永遠登錄,才能保持它一直運行。終端還是控制程序的唯一方式:可以按下Ctrl+C停止 CruiseControl,并再次運行程序重新啟動它。除非使用虛擬網絡計算(VNC)會話或類似的東西,否則就不能遠程地做上面這些事。如果 CruiseControl(或者 JVM)崩潰,就需要手動地重啟它。而且當重新啟動機器時,也需要手動地建立新會話、創建終端、再次啟動程序,CruiseControl 才能重啟。所以需要讓 CruiseControl 作為一個服務運行,或者用 Unix 的術語來說,作為一個守護程序運行。
讓程序在 Linux 下持續運行的方法有許多種。最常用的方法可能是把合適的腳本掛上init系統初始化進程,在系統啟動時啟動程序。這些腳本可以啟動和停止程序,但是不能在程序出現故障時自動重啟程序。
我用的方法 I 是下載并安裝 Daniel J. Bernstein 的daemontools(請參閱參考資料)。這是一個小的程序包,負責啟動一組服務并保持這些服務一直運行。要執行自己的daemontools安裝,需要登錄為root:
[root@fcvm ~]#mkdir -p /package[root@fcvm ~]#chmod 1755 /package[root@fcvm ~]#cd /package[root@fcvm package]#wget -q http://cr.yp.to/\ daemontools/daemontools-0.76.tar.gz[root@fcvm package]#gunzip daemontools-0.76.tar.gz[root@fcvm package]#tar -xpf daemontools-0.76.tar[root@fcvm package]#rm daemontools-0.76.tarrm: remove regular file 'daemontools-0.76.tar'?y[root@fcvm package]#
文章來源于領測軟件測試網 http://www.kjueaiud.com/