2015-09-11 109 views
0

閱讀https://ant.apache.org/manual/dirtasks.html,它說螞蟻patternset部分集

「*這些圖案看起來非常像DOS和UNIX使用模式: ‘*’匹配零個或多個字符,‘?’匹配一個字符。「

我想清理以下(簡單例子:)因爲我認爲第二種形式是更簡潔,可讀性(如果你知道正則表達式的模式,當然):

<copy todir="${target.dir}" flatten="true" > 
    <fileset dir="${source.dir}" > 
     <include name="**/*.war" /> 
     <include name="**/*.ear" /> 
     <include name="**/*.gar" /> 
     <exclude name="some-dir/**" /> 
    </fileset> 
</copy> 

要是這樣的:

<include name="**/*.[weg]ar" /> 

但不被支持,即使它是類UNIX。

  <include name="**/*.?ar" /> 

是不夠的,因爲我不希望有「的* .jar」

什麼是解決這個問題的最有效方法是什麼?

PS:仍在螞蟻1.7.1

+1

我不認爲你可以做這個。這不是正則表達式語法,而是_globbing_。你只有'*'和'?'功能,但這些是glob字符而不是正則表達式符號。 –

+0

是的,我認識到這是copy/include構造中唯一可用的選項,但是是否有另一種解決方案,包含資源集合或其他方法......等同於「find * -name」*。[weg] ar 「',這將解決,然後可以在副本中使用? –

回答

1

你應該升級螞蟻版本(> = 1.8.x的),然後使用:

<copy todir="${target.dir}" flatten="true" > 
<fileset dir="${source.dir}" > 
    <filename regex=".*\.[weg]ar"/> 
</fileset> 
</copy>