Как превратить FileSet в список файлов в Mojo - PullRequest
3 голосов
/ 24 января 2009

Я пишу свой первый Maven Mojo, в нем я хочу взять набор файлов и обработать все файлы, на которые он ссылается.

В псевдокоде, что я хотел бы сделать ...

void myCode(org.apache.maven.model.FileSet fileSet) {
    List<java.io.File> files = FileSetTransformer.toFileList(fileSet);
    for (File f : files) {
        doSomething(f);
    }
}

Так что мне нужен настоящий код для «FileSetTransformer.toFileList», мне кажется, что это очень распространенная вещь, которую я хочу сделать, но я не могу понять, как это сделать.

Ответы [ 2 ]

2 голосов
/ 25 января 2009

Спасибо, Изумруджава, это дает мне достаточно, чтобы выработать ответ на мой вопрос.

plexus-utils имеет служебный класс FileUtils, вы можете добавить к нему зависимость таким образом:

<dependency>
  <groupId>org.codehaus.plexus</groupId>
  <artifactId>plexus-utils</artifactId>
  <version>1.1</version>
</dependency>

Получив FileUtils, вы можете реализовать FileSetTransformer следующим образом:

public final class FileSetTransformer {
        private FileSetTransformer () {
        }

        public static List<File> toFileList(FileSet fileSet) {
                File directory = new File(fileSet.getDirectory());
                String includes = toString(fileSet.getIncludes());
                String excludes = toString(fileSet.getExcludes());
                return FileUtils.getFiles(directory, includes, excludes);
        }

        private static String toString(List<String> strings) {
                StringBuilder sb = new StringBuilder();
                for (String string : strings) {
                        if (sb.length() > 0)
                                sb.append(", ");
                        sb.append(string);
                }
                return sb.toString();
        }
}
2 голосов
/ 24 января 2009

См. Javadoc для Maven FileSet и используйте методы getDirectory () и getInclude (). Это пример существующего maven mojo , который делает что-то похожее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...