Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Ant以自定义格式列出目录内容_Java_Xml_Deployment_Ant_Build - Fatal编程技术网

Java Ant以自定义格式列出目录内容

Java Ant以自定义格式列出目录内容,java,xml,deployment,ant,build,Java,Xml,Deployment,Ant,Build,我正在使用Ant构建我的软件。Ant使用echoxml函数创建一个Xml文件,然后将创建的Xml文件提供给另一个特殊程序 现在我想在echoxml标记中列出目录的内容 如何做到这一点?我的最终xml文件应该如下所示,只提供目录的路径: directory/firstFile.jar cp>目录/secondFile.jar directory/XYZFile.jar EchoXML是一种ant-tast,它已经被指定以嵌套的xml字符串作为其内容,将这些内容直接输出到文件(或控制台)。因此,根

我正在使用Ant构建我的软件。Ant使用
echoxml
函数创建一个Xml文件,然后将创建的Xml文件提供给另一个特殊程序

现在我想在
echoxml
标记中列出目录的内容

如何做到这一点?我的最终xml文件应该如下所示,只提供目录的路径:

directory/firstFile.jar

cp>目录/secondFile.jar

directory/XYZFile.jar


EchoXML是一种ant-tast,它已经被指定以嵌套的xml字符串作为其内容,将这些内容直接输出到文件(或控制台)。因此,根据文档,它不能满足您的需求

但是,使用javaxxml扩展和文件api修改标准ant任务来完成这项任务非常简单

首先,请参阅,并确认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>

EchoXML是一种ant-tast,它已经被指定以嵌套的xml字符串作为其内容,将这些内容直接输出到文件(或控制台)。因此,根据文档,它不能满足您的需求

但是,使用javaxxml扩展和文件api修改标准ant任务来完成这项任务非常简单

首先,请参阅,并确认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>