如何将FileSet转换为Mojo中的文件列表

问题描述:

我正在编写我的第一个Maven Mojo,其中我想采用一个文件集并处理它引用的所有文件。如何将FileSet转换为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”真正的代码,在我看来就像一个很平常的事想要做,但我似乎无法找到如何做到这一点。

查看javadoc的Maven FileSet并使用getDirectory()和getIncludes()方法。这是一个existing maven mojo的例子,它做了一些类似的事情。

谢谢emeraldjava,这给了我足够的解决我的问题的答案。

丛-utils的有一个名为fileutils中的实用工具类,你可以在上面添加一个依赖这样的:

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

一旦你有文件实用程序,你可以由此实现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(); 
     } 
}