2011-07-01 64 views
10

我一直在搜索「文件集和路徑之間的差異」文章一段時間,但沒有發現有用的東西。 例如,就是下面的(比如,有一個someDir目錄,其中包含.jar文件,也沒有子目錄)之間的區別:嵌套路徑和文件集有什麼區別?

<path id="somePathId"> 
    <pathelement path="someDir"/> 
</path> 

<path id="someId"> 
    <path refid="somePathId" /> 
</path> 

<path id="someId"> 
    <fileset dir="someDir"> 
    <include name="*.*"> 
    </fileset> 
</path> 

+0

順便說一下,可以指定一個文件文件集。使用嵌套的代替它會更好嗎? – Dmitry

+0

謝謝,編輯 – Dmitry

回答

2

它們用於不同的情況。

fileset用於指定一組文件。您可以使用selector s和patternset s僅獲取所需的文件。

classpath用於指定類路徑引用。可以用單個罐子(location="..."),;:分隔的罐子列表(path="...")或嵌套資源集合(如fileset)來指定classpath

另外如果你想對其進行調試,這是不同的:

<echo message="Build-path: ${toString:build-path}" /> 

VS

<property name="debug.classpath" refid="classpath"/> 
<echo message="Classpath = ${debug.classpath}"/> 

至於你的腳本,

<path id="somePathId"> 
    <pathelement location="someDir"/> 
</path> 

我沒有測試,但根據到documentationpath=預計;:分開的罐子列表。這與你的第二個例子不一樣。

+0

非常感謝!這真的有幫助! – Dmitry

2

一個<path><fileset>之間的主要區別是,在<fileset>如果要包含或排除某些類型的文件(基本上,它的一個路徑中的文件組...沒必要所有的文件,您可以指定),例如:

<path id="someId"> 
    <fileset dir="someDir"> 
    <include name="*.java"> 
    <include name="*.properties"> 
    </fileset> 
</path> 
+0

AFAIK這個例子不起作用,因爲它會搜索匹配兩個表達式的文件,即'* .java'和'* .properties'。 – Thresh

+2

是的,這就是我想說的。我正在搜索這兩個文件。如果你不能排除一個模式,你可以使用'<排除...' – Arpit

+0

無論如何,謝謝你的答案! – Dmitry

相關問題