3
3
import java .io .IOException ;
4
4
import java .io .UncheckedIOException ;
5
5
import java .net .URI ;
6
+ import java .nio .file .AccessDeniedException ;
6
7
import java .nio .file .FileVisitResult ;
7
8
import java .nio .file .Files ;
8
9
import java .nio .file .Path ;
@@ -74,7 +75,8 @@ void locateWorkspaceItems(BuildSystemTargetBuildItem buildSystemTarget,
74
75
Files .walkFileTree (projectRoot , new SimpleFileVisitor <Path >() {
75
76
@ Override
76
77
public FileVisitResult preVisitDirectory (Path dir , BasicFileAttributes attrs ) throws IOException {
77
- if (Files .isHidden (dir ) || ignoreFolders .contains (dir .getFileName ().toString ())) {
78
+ if (Files .isHidden (dir ) || ignoreFolders .contains (dir .getFileName ().toString ())
79
+ || !Files .isReadable (dir ) || !Files .isExecutable (dir )) {
78
80
return FileVisitResult .SKIP_SUBTREE ;
79
81
}
80
82
return FileVisitResult .CONTINUE ;
@@ -84,7 +86,7 @@ public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) th
84
86
public FileVisitResult visitFile (Path file , BasicFileAttributes attrs ) throws IOException {
85
87
String fileName = file .getFileName ().toString ();
86
88
boolean shouldIgnore = Files .isHidden (file )
87
- || file .startsWith (outputDir )
89
+ || file .startsWith (outputDir ) || ! Files . isReadable ( file ) || ! Files . isExecutable ( file )
88
90
|| ignoreFilePatterns .stream ().anyMatch (p -> p .matcher (fileName ).matches ());
89
91
90
92
if (!shouldIgnore ) {
@@ -93,6 +95,18 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IO
93
95
}
94
96
return FileVisitResult .CONTINUE ;
95
97
}
98
+
99
+ @ Override
100
+ public FileVisitResult visitFileFailed (Path file , IOException exc ) throws IOException {
101
+ if (exc instanceof AccessDeniedException ) {
102
+ if (Files .isDirectory (file )) {
103
+ return FileVisitResult .SKIP_SUBTREE ;
104
+ } else {
105
+ return FileVisitResult .CONTINUE ;
106
+ }
107
+ }
108
+ return super .visitFileFailed (file , exc );
109
+ }
96
110
});
97
111
98
112
} catch (IOException e ) {
0 commit comments