我有一個ant任務使用apply任務在一組文件上運行腳本。將可選路徑參數傳遞給螞蟻
我有這樣的目錄結構產生: mkdir -p a/{b,c,d,e}/f
通常情況下(如果我通過沒有參數),我想螞蟻在所有f
的磨合。 也就是說,如果我打電話給ant mytask
,它應該處理:a/b/f, a/c/f, a/d/f, a/e/f
。這已經可以使用apply和patternsets。
但是,當我向它傳遞一個名爲foo
的可選參數時,它應該只調用a/foo/f
上的腳本。
所以如果我打電話ant mytask -foo b
,它應該只處理a/b/f
,而不是其他處理。
我讀過this SO post,它解釋了傳遞參數的方法,並且我查看了關於properties和conditionals的ant文檔。但我仍然無法以有效的方式將它們拼湊在一起。
而且,我不希望使用的建議,一個從SO高於此呼籲這樣的論點:
<arg value="${arg0}"/>
<arg value="${arg1}"/>
我希望能夠稱其爲ant mytask -foo valueoffoo
的任意foo
。
謝謝。
我想馬丁·克萊頓的建議之下,並有這樣的代碼:
<target name="mytask">
<property name="foo" value="*" />
<apply executable="perl">
<arg value="somescript"/>
<dirset id="them" dir="a">
<include name="${foo}/*/f" />
</dirset>
</apply>
</target>
以上我想要做什麼。
注意1:在我的實際代碼中,我使用的是模式集而不是dirset,但它應該可以工作。
注2:在我原來的問題中,我說的目錄結構是a/{b,c,d,e}/f
。它實際上有點複雜,因此在上面的包括*
。我第一次忽略它,因爲它看起來不相關。
我不知道我下面這個 - 你的榜樣Ant命令行中提到的目標'mytask'和任意'foo',但你的樣本構建文件是一個名爲foo的目標是什麼?你是否需要通過一個任意的子路徑?或者它只是一個任意的目錄級別? –
@馬丁·克萊頓:噢,對不起,你是正確的,是混亂的。我解決了我的問題。 – yarian
因此,默認情況下,include模式是'*/*/f' - 您希望能夠從命令行覆蓋哪些部分? '$ {foo}'部分或者中間''''或者兩者都可能? –