build.xml具有測試和構建目標。 測試目標顯然取決於構建目標。Ant是否提供繞過依賴的方法?
如何僅運行測試目標,暫時跳過編譯,而不修改build.xml文件?
我在問,因爲編譯時間過長,並且持續集成服務器保持最新;我正在追逐單元測試的問題。
build.xml具有測試和構建目標。 測試目標顯然取決於構建目標。Ant是否提供繞過依賴的方法?
如何僅運行測試目標,暫時跳過編譯,而不修改build.xml文件?
我在問,因爲編譯時間過長,並且持續集成服務器保持最新;我正在追逐單元測試的問題。
不,不能在不修改構建文件的情況下跳過它。
這是我在我的項目中解決此問題的方法。 對於每個公共目標,我都會在它前面創建一個帶有「do-」的私人目標。 私有目標沒有依賴性,公共目標具有「do-」目標作爲依賴項。
例如:
<target name="compile" depends="init, do-compile" description="Compiles all of the source code" />
<target name="do-compile">
<javac destdir="${classes.dir}" debug="true" encoding="ISO-8859-1">
<src refid="src.path" />
<include name="*.java" />
<classpath refid="external.libraries.classpath" />
</javac>
</target>
就我個人而言,我發現了Ant中的依賴項,以幫助獲取更多的方法。我通常會設置兩組目標 - 其中做的東西(沒有依賴關係),然後目標只是有依賴關係。這樣,您可以輕鬆地運行單個目標,並且還可以輕鬆運行整個套件等。這與我認爲的實用(而不是意識形態)的用法相符。
好的技巧,謝謝。 – philant 2008-12-17 14:36:28
只是暫時「除去」依賴關係嗎?`如果代碼已經建好了,所有的文件都應該可用,否? - 哎呀,剛剛看到你不能修改文件,嗯,爲什麼你不先在本地運行同樣的工作?
編寫良好的構建目標不需要重建任何代碼,如果代碼沒有改變。所以測試目標依賴於它的事實應該在很大程度上不相關。如果您連續運行構建目標兩次,並嘗試第二次重建某些內容,則可能需要調查爲什麼要這樣做。
避免執行目標的簡單方法是將目標的「除非」屬性設置爲某個屬性的名稱。如果您在運行Ant時在命令行上設置此屬性,它將繞過該目標。
同意,但Ant僅用於引導基於Makefile的大型代碼庫編譯。 – philant 2008-12-17 15:01:02
使用unless
屬性。
<target name="test" unless="dont.run.tests">
如果你不想 「測試」 來運行,只是
螞蟻-Ddont.run.tests =真
,如果你想測試應未定義跑步。 Ant只是檢查它是否被定義。另外,有一個if
屬性可以做相反的處理。
這是兩者的article。
這是正確的方法,應該標記爲正確的答案 – 2015-02-19 20:26:55
聽起來就像我們以類似的方式工作 - 很高興知道我並不孤單在這方面:) – 2008-12-17 14:33:23