我們有一個Java小程序的項目,我們生成使用Ant的包裝HTML,它看起來有點像這樣:參數多態的Ant腳本構建同一個文件的兩個版本
<target name="build-applet" description="Build web applet" depends="set-build-properties, set-properties">
<antcall target="clean" />
<antcall target="clean-applet" />
<antcall target="set-version" />
<antcall target="compile" />
<antcall target="jar" />
<antcall target="applet" />
</target>
<target name="applet">
<replace file="${applet.dir}/${applet.html.file}">
<replacefilter token="@[email protected]" value="${applet.jar.file}"/>
<replacefilter token="@[email protected]" value="${applet.assets.file}"/>
<replacefilter token="@[email protected]" value="${applet.codebase}"/>
</target>
注意${applet.codebase}
必須是URL小程序從例如mysite.com/game加載。它被設置在一個屬性文件中。
現在我希望能夠將這個小程序構建到兩個不同的位置,這是一個實時/測試設置的一部分。例如,可以通過mysite.com/game和mysite.com/test訪問其中的一個。我幾乎工作,除了${applet.codebase}
,因爲這需要在每種情況下不同。我以爲我可以有${applet.codebase}
和${applet.codebase_test}
但我不知道如何做到這一點。也許有一種方法可以將標誌從build-applet
傳遞到applet
目標,並添加兩個頂級目標build-applet-live
和build-applet-test
,這些目標只需與參數build-applet
調用即可。
因爲ant腳本和關聯的屬性文件是我們的Eclipse項目的一部分......除非我誤解了你的解決方案意味着將命令行變量傳遞給ant? –
是的,也可以用Eclipse Run As> Ant Build ...第二項 – Rebse
另一個稍微相關的重構:將antcalls更改爲clean,clean-applet,set-version,compile和jar到依賴列表中的構建小程序。讓螞蟻爲你管理依賴關係圖要乾淨得多。我也完全同意小程序應該消失,轉而將param傳遞給ant,或者至少應該是一個宏 – thekbb