2009-01-09 16 views
8

如果我有這樣的文件集:如何有一個Ant文件集INCLUDE優先於一個排除

<fileset dir="."> 
    <exclude name="classes/*"/> 
    <include name="**/zar.class"/> 
</fileset> 

的排除優先於包含,我不與任何類告終。 [因爲這個假設的例子,zar.class是在類dir]我想包括zar文件,即使它在類dir中。

我一會兒就碰到這個問題,讀了一下關於選擇器,模式集,文件集,嘗試組合文件集等等,但無法使其工作。

任何人都知道如何做到這一點?

回答

2

我不知道你想要什麼,但我認爲你是在正確的軌道看着pattersets上:怎麼樣:

<patternset id="a"> 
    <exclude name="classes/*"/> 
</patternset> 

<patternset id="b"> 
    <include name="**/zar.class"/> 
</patternset> 

<fileset dir="."> 
    <patternset refid="a" /> 
    <patternset refid="b" /> 
</fileset> 
4

爲什麼需要排除元素?

<fileset dir="."> 
    <include name="**/zar.class"/> 
</fileset> 

應該給你確切的文件集你是後:zar.class,其他.class文件沒有在類/。


只是把這個社區維基模式,因爲我不知道,經過再三考慮,這實際上是你所追求的:
你可能想一切,包括類/.../ zar.class,除了classes/....

我的解決方案只會給你zar.class。

請留下評論:如果這不是一個好的解決方案,我會刪除它。

1

在原始問題中使用了哪種版本的Ant?

使用Ant 1.8.2,該節不會產生期望的結果!?

<fileset dir="." id="some.fileset"> 
    <exclude name="build/classes/*" /> 
    <include name="**/A.class" /> 
</fileset> 

<target name="test"> 
    <pathconvert pathsep="${line.separator}" property="listed.fileset" refid="some.fileset"/> 
    <echo message="${listed.fileset}" /> 
</target> 

路徑和名稱略有不同,但這種確實顯示的A.class和顯示B.class,這是正確的旁邊。

相關問題