2011-10-28 7 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があります既にあるアリの味ネストされたxml文字列をその内容として取り込み、それらの内容を直接ファイル(またはコンソール)に出力するように指定されています。したがって、ドキュメントによれば、それはあなたのニーズを満たすものではありません。

しかし、標準のantタスクを変更するには、javax xml拡張機能を使用して、File APIを使用してこれを行うのが簡単です。

まず、http://ant.apache.org/manual/Tasks/echoxml.htmlを参照し、EchoXMLが必要な処理を行っていないことを確認してください。

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

なかった

は今、簡単な解決策は...独自のXMLライターのタスクを実装するだけで、独自のクラスを記述することです仕事、ありがとう –

関連する問題