diff --git a/src/main/java/de/hhu/stups/sablecc/gradle/SableCCTask.java b/src/main/java/de/hhu/stups/sablecc/gradle/SableCCTask.java index 68bdad59a7646d816e1067d3c91313972a19a4c9..27466f90c5e3572913184de5c296d119e6762c90 100644 --- a/src/main/java/de/hhu/stups/sablecc/gradle/SableCCTask.java +++ b/src/main/java/de/hhu/stups/sablecc/gradle/SableCCTask.java @@ -127,16 +127,19 @@ public abstract class SableCCTask extends SourceTask { }); // Move generated dat files from Java source directory to resources directory. - this.getFs().copy(spec -> { - spec.from(destinationJavaPath); - spec.into(destinationResourcesPath); - spec.include("**/*.dat"); - }); - this.getFs().delete(spec -> { - ConfigurableFileTree fileTree = this.objectFactory.fileTree(); - fileTree.from(destinationJavaPath); - fileTree.include("**/*.dat"); - spec.delete(fileTree); - }); + ConfigurableFileTree datFiles = this.objectFactory.fileTree(); + datFiles.from(destinationJavaPath); + datFiles.include("**/*.dat"); + for (File datFile : datFiles) { + Path sourcePath = datFile.toPath(); + assert sourcePath.isAbsolute(); + Path relativePath = destinationJavaPath.relativize(sourcePath); + Path destinationPath = destinationResourcesPath.resolve(relativePath); + assert destinationPath.isAbsolute(); + if (destinationPath.getParent() != null) { + Files.createDirectories(destinationPath.getParent()); + } + Files.move(sourcePath, destinationPath); + } } }