2 votes

hudson.FilePath : Comment lister les sous-répertoires ainsi que le filtre global excludes ?

Je travaille sur un plugin personnalisé Jenkins, où j'ai besoin de lister tous les chemins de fichiers valides : sous-répertoires et fichiers enfants, à l'exclusion de certains fichiers temporaires comme par exemple .git,.npm,.cache etc La liste complète est incluse dans l'exemple de code ci-dessous :

String excludes = "node_modules/**/*,**/node_modules/**/*,.git/**,.npm*/**,**/.npm*/**,**/.nvm*/**,**/cronus/**,**/.cache/**,**/npmtmp/**,**/.tmp/**";
FilePath[] validFileAndFolderPaths = workspace.list("**/*", excludes);

Le code ci-dessus me donne tous les fichiers dans le fichier workspace FilePath, mais pas les sous-répertoires.

Il existe une méthode pour répertorier tous les sous-répertoires hudson.FilePath#listDirectories mais il ne prend pas en charge la liste d'exclusion. Avez-vous une idée de la façon de répondre à cette exigence ?

1voto

ycr Points 802

Vous ne pouvez pas utiliser hudson.FilePath#listDirectories avec un modèle d'exclusion/inclusion. Vous devrez donc implémenter votre propre méthode pour obtenir les répertoires supportant le filtrage Ant. Voici un exemple de code.

Dépendance

<dependency>
  <groupId>org.apache.ant</groupId>
  <artifactId>ant</artifactId>
</dependency>

Code Java

private String [] getDirectories(String baseDir, String excludes) {

    DirSet ds = new DirSet();
    ds.setDir(new File(baseDir));
    for (String token : excludes.split(",")) {
        ds.createExclude().setName(token);
    }
    DirectoryScanner scanner = ds.getDirectoryScanner(new Project());
    String[] directories = scanner.getIncludedDirectories();

    return directories;
}

Appel de la méthode

String excludes = "node_modules/**/*,**/node_modules/**/*,.git/**,.npm*/**,**/.npm*/**,**/.nvm*/**,**/cronus/**,**/.cache/**,**/npmtmp/**,**/.tmp/**";
String dir = "/SOME/DIR";
String[] directories = getDirectories(dir, excludes);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X