我正在使用Ant来构建我的软件。 Ant使用echoxml
函数创建一个Xml文件,然后将创建的xml文件提供给另一个特殊程序。
现在我想列出echoxml
标记中的目录内容。
如何做到这一点?我的最终xml文件看起来应该是这样的,只提供目录的路径:
<SomeXmlTag>
<cp>directory/firstFile.jar</cp>
cp>directory/secondFile.jar</cp>
<cp>directory/XYZFile.jar</cp>
</SomeXmlTag>
答案 0 :(得分:1)
EchoXML是一个antast,它已被指定为将嵌套的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>