代码之家  ›  专栏  ›  技术社区  ›  Tom

如何将文件集转换为mojo中的文件列表

  •  3
  • Tom  · 技术社区  · 16 年前

    我正在写我的第一个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 回复  |  直到 13 年前
        1
  •  2
  •   prunge    13 年前

    为马文看JavaDoc FileSet 并使用getdirectory()和getincludes()方法。这是一个例子 existing maven mojo 做了些模拟。

        2
  •  2
  •   Tom    16 年前

    谢谢EmeraldJava,这足以让我解答我的问题。

    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();
            }
    }
    
    推荐文章