2013-07-15 123 views
0

我想實現一個類似zipgroupfileset的替代Ant類型,但接受類路徑類的字符串作爲輸入。擴展Ant zipgroupfileset類型

我的問題是:即使在下載apache ant的源代碼時,我也找不到任何有關它的代碼或實現特定信息,沒有typedef也沒有擴展類。 zipgroupfileset甚至似乎沒有正確記錄。有關此類型的主要文件似乎是在Zip Task documentation這個很短的一段:

zipgroupfileset

一個zipgroupfileset允許多個zip文件合併到 存檔。在該文件集中找到的每個文件都以與添加zipfileset src文件相同的方式添加到存檔 。

zipgroupfileset是一個文件集並支持其所有屬性和 嵌套元素。

我的錯誤在哪裏?

+0

在開始嘗試爲自己實現此功能之前,請檢查現有[''](http://ant.apache.org/manual/Types/resources.html#archives)資源集合是否可以滿足您的需求。 –

+0

不知道這是否可以幫助我:我需要評估一個變量,比如'libs/a.jar; libs/b.jar; bin/c.jar',並使用''任務將其所有內容包含到新jar中 –

+0

謝謝伊恩。這似乎對我來說是一個解決方案。 –

回答

4

我需要評估像libs/a.jar;libs/b.jar;bin/c.jar一個變量,包括使用<jar>任務到一個新的jar所有內容

可以使用<archives> resource collection type,可用,因爲螞蟻1.8

<property name="jars.to.include" value="libs/a.jar;libs/b.jar;bin/c.jar" /> 

<jar destfile="dest.jar"> 
    <archives> 
    <zips> 
     <path path="${jars.to.include}" /> 
    </zips> 
    </archives> 
</jar> 
做到這一點

關於zipgroupfileset本身:

我找不到任何代碼或特定於實現的信息,沒有typedef和擴展類。

沒有特定的類表示zipgroupfileset,邏輯是embedded in the zip task implementation。該Zip任務具有

public void addZipGroupFileset(FileSet set) 

所以在XML標籤<zipgroupfileset>被視爲定義一個普通FileSet - 當執行壓縮(或jar)任務,你可以合法地做

<fileset id="lib.jars" dir="lib" includes="*.jar" /> 

<jar destfile="dest.jar"> 
    <zipgroupfileset refid="lib.jars" /> 
</jar> 

,每個將依次檢查「組」文件集,併爲該組包含一個新的ZipFileSet的每個zip/jar文件生成該文件讀取,並將生成的ZipFileSet的內容添加到目標歸檔。

+0

這確實解決了我的具體問題。但是我會等待幾天接受,希望有人回答關於zipgroupfileset實現的問題。無論如何感謝 –

+0

@DanielAlder沒有zipgroupfileset的「實現」,因此標籤被實現爲[zip任務內的特例](http://svn.apache.org/viewvc/ant/core/tags/ANT_192 /src/main/org/apache/tools/ant/taskdefs/Zip.java?view=markup#l851),它是zip/jar文件的普通文件集,它被「相乘」成一組'在運行時等價。 –

+0

我看到了這段代碼。但是這意味着也可以使用zipfileset而不是zipgroupfileset?我找不到任何等於(「zipgroupfileset」)或類似的東西。 –