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

原文 标签 java xml deployment ant build

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

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

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

<SomeXmlTag>

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

cp>directory/secondFile.jar</cp>

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

</SomeXmlTag>

最佳答案

EchoXML是一种ant 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>

关于java - Ant 以自定义格式列出目录内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7932879/

相关文章:

java - 通过连接防止Oracle数据库错误

java - 从 getBooleanExtra 显示多个字符串

java - 在 Java 中随机迭代 ArrayList<Integer>

c# - 使用 c# 将内联 XML 节点转换为 asp.net 中的嵌套节点

xml - 在 xml 中找不到具有命名空间的元素

ruby-on-rails - Nginx许可拒绝我的Rails文件错误?

c# - 我应该从发行目录中清除* .vshost.exe和* .vshost.exe.config吗?

java - 小程序老是弹出警告对话框

java - 用Java解析XML

java - 具有高可用性的 Wildfly 域模式集群部署