2011-10-28 42 views
1

我使用Ant來構建我的軟件。 Ant使用echoxml函數創建一個Xml文件,然後將創建的xml文件提供給另一個特殊程序。自定義格式的Ant列表目錄內容

現在我想列出echoxml標籤中的目錄內容。

這怎麼辦?我最後的XML文件應該是這個樣子,只提供對目錄的路徑:

<SomeXmlTag>

<cp>directory/firstFile.jar</cp>

cp>directory/secondFile.jar</cp>

<cp>directory/XYZFile.jar</cp>

</SomeXmlTag>

回答

1

EchoXML是已經是螞蟻tast了指定採用嵌套的xml字符串作爲其內容,將這些內容直接輸出到文件(或控制檯)。所以根據文件,它不能滿足你的需求。

但是,使用javax xml擴展名和File api修改標準的ant任務來執行此操作非常簡單。

首先,請參閱http://ant.apache.org/manual/Tasks/echoxml.html,並確認EchoXML不會執行您需要的操作。

現在,一個簡單的解決方案是實現自己的XML作家的任務......簡單地寫自己的類:

public class MyFileTreeWriter extends Task { 
    public void execute() { 
      File dirs = new File("./"); 
      //Alternatively, you can use apache's FileUtils directory walkers https://commons.apache.org/io/api-1.4/index.html?org/apache/commons/io/DirectoryWalker.html  

    // Psuedo code below, uses standard javax.xml.* packages ... 
    for (String file : dirs.listFiles()){ 
    Element em = document.createElement("file"); 
    em.appendChild(document.createTextNode(file); 
    rootElement.appendChild(em); 

    } 
} 

然後將其添加到您的構建:

<target name="use" description="MyFileTreeWriter task" depends="jar"> 
    <taskdef name="writeDirs" classname="MyFileTreeWriter" classpath="${ant.project.name}.jar"/> 
</target> 
+0

做的工作,謝謝 –