編者語:在這本書中,PRagmatic Project Automation, Mike Clark 為你提供了無所不有的方法來自動化你的軟件項目:用Ant來一步式構建(one-step builds),用CruiseControl 按計劃時間來持續構建(scheduling continuous builds),按一下按鈕就可以發布軟件,輕易地安裝和布署應用,通過email,rss,你的手機,甚至是熔巖燈(lava lamps)來監控構建和程序運行。方法包含示例使初學者也很輕易實踐,即使是熟手也有更多高級的主題能教她們一些新東西。在這篇文章里,他描繪了自動化你的項目能帶來的好處的概要。
你即將要在明天早上交付一個用于要害性演示的軟件版本。穿著西裝的銷售人員嘴里吹著泡炫耀你公司的新的輔助應用給一些十分重要的有錢人。正象你正在鍵盤上尋找感覺,你的老板卻站到你的旁邊提醒你這個演示可能會得到這個項目或者讓項目完蛋。不要有任何壓力!
一步構建和測試
在你為那些“必須有”的演示特征輸入最后一行代碼后,差不多都中午了。你最喜愛的IDE 顯示你的代碼編譯通過并通過了單元測試。但是當他結合到系統的其余部分,你的代碼是否能象預期的那樣正常工作呢?為了弄清楚它,你更新了你本地的工作區,為了同步現在版本控制系統中的文件。然后你運行了項目的一步式構建過程:
$ ant
這個命令編譯了所有的代碼文件,運行了下面Ant構建文件中的配置的所有的單元測試。
清單1:
<project name="whizbang" default="test" basedir=".">
<property name="build.prod.dir" location="build/prod"/>
<property name="build.test.dir" location="build/test"/>
<property name="src.dir" location="src"/>
<property name="test.dir" location="test"/>
<property name="vendor.lib.dir" location="vendor/lib"/>
<path id="project.classpath">
<pathelement location="${build.prod.dir}" />
<pathelement location="${build.test.dir}" />
<fileset dir="${vendor.lib.dir}">
<include name="*.jar"/>
</fileset>
</path>
<target name="prepare">
<mkdir dir="${build.prod.dir}"/>
<mkdir dir="${build.test.dir}"/>
</target>
<target name="compile" depends="prepare">
<javac srcdir="${src.dir}" destdir="${build.prod.dir}">
<classpath refid="project.classpath" />
</javac>
</target>
<target name="compile-tests" depends="compile">
<javac srcdir="${test.dir}" destdir="${build.test.dir}">
<classpath refid="project.classpath" />
</javac>
</target>
<target name="test" depends="compile-tests">
<junit haltonfailure="true">
<classpath refid="project.classpath" />
<formatter type="brief" usefile="false" />
<batchtest>
<fileset dir="${build.test.dir}"
includes="**/*Test.class" />
</batchtest>
</junit>
</target>
</project>
當你寫代碼時,你在你的IDE中頻繁地點擊方便的構建按鈕來確認所有的東西都編譯了。你也已經熱衷于當你的JUnit測試通過后,看到一個快樂的綠色條(單元測試成功的標志),然后你使用JUnit測試運行器(JUnit test runner)整合到你的IDE中。但不是團隊里的每個人都象你那樣喜歡這個IDE,而且你也不想在每次有人想做一個構建時就不得不啟動IDE。使用構建文件來和你的IDE分離,每個團隊里的人都能一步式地持續構建和測試項目。(項目使用Maven 來創建一步式構建。)
新聞熱點
疑難解答