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);
+		}
 	}
 }