Содержимое каталога Ant в произвольном формате - PullRequest
1 голос
/ 28 октября 2011

Я использую Ant для сборки своего программного обеспечения.Ant создает файл XML с помощью функции echoxml, а затем предоставляет созданный файл XML другой специальной программе.

Теперь я хотел бы перечислить содержимое каталога в теге echoxml.

Как это можно сделать?Мой окончательный XML-файл должен выглядеть примерно так, предоставляя только путь к каталогу:

<SomeXmlTag>

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

cp>directory/secondFile.jar</cp>

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

</SomeXmlTag>

1 Ответ

1 голос
/ 28 октября 2011

EchoXML - это муравейный тест, в котором уже указано, что он принимает вложенную строку XML в качестве своего содержимого, выводя это содержимое непосредственно в файл (или на консоль).Таким образом, согласно документации, это не удовлетворяет вашим потребностям.

Тем не менее, довольно просто изменить стандартную задачу ant, чтобы сделать это с помощью расширений javax xml и вместе с API-интерфейсом File.

Сначала посмотрите 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...