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

发布于 2024-12-12 05:17:07 字数 403 浏览 0 评论 0原文

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

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

这怎么能做到呢?我的最终 xml 文件应如下所示,仅提供目录路径:

directory/firstFile.jar

<代码>cp>目录/secondFile.jar

directory/XYZFile.jar

I am using Ant to build my software. Ant creates an Xml file with the echoxml function and then provides the created xml file to another special program.

Now I would like to list the content of a directory in the echoxml tag.

How can this be done? My final xml file should look something like this, only providing a path to the directory:

<SomeXmlTag>

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

cp>directory/secondFile.jar</cp>

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

</SomeXmlTag>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

§对你不离不弃 2024-12-19 05:17:07

EchoXML 是一个 ant tast,它已被指定为采用嵌套的 xml 字符串作为其内容,并将这些内容直接输出到文件(或控制台)。所以根据文档来看,它不能满足你的需求。

然而,使用 javax xml 扩展和 File api 修改标准 ant 任务来完成此操作非常简单。

首先,请参阅 http://ant.apache.org/manual/Tasks/echoxml.html< /a>,并确认 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 is an ant tast which is already specified to take a nested xml string as its contents, outputting those contents directly to a file (or to the console). So according to the documentation, it doesn't satisfy your needs.

However, it is pretty simple to modify a standard ant task to do this using the javax xml extensions and along with a the File api.

First, See http://ant.apache.org/manual/Tasks/echoxml.html, and confirm that EchoXML does not do what you need it to do.

Now, a simple solution is to implement your own xml writer task ... to simply write your own class :

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); 

    }
}

And then add this to your build :

<target name="use" description="MyFileTreeWriter task" depends="jar">
    <taskdef name="writeDirs" classname="MyFileTreeWriter" classpath="${ant.project.name}.jar"/>
</target>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文