Kaynağa Gözat

HADOOP-10075. addendum to fix compilation on Windows

Robert Kanter 8 yıl önce
ebeveyn
işleme
ebb88231f8

+ 17 - 11
hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/resourcegz/ResourceGzMojo.java

@@ -24,10 +24,12 @@ import org.apache.maven.plugins.annotations.Parameter;
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileOutputStream;
+import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.List;
 import java.util.function.Consumer;
+import java.util.regex.Matcher;
 import java.util.zip.GZIPOutputStream;
 
 /**
@@ -101,17 +103,21 @@ public class ResourceGzMojo extends AbstractMojo {
       }
       try {
         File outFile = new File(outputDir, path.toFile().getCanonicalPath()
-            .replaceFirst(inputDir.getCanonicalPath(), "") + ".gz");
-        outFile.getParentFile().mkdirs();
-        try (
-            GZIPOutputStream os = new GZIPOutputStream(
-                new FileOutputStream(outFile));
-            BufferedReader is = Files.newBufferedReader(path)
-        ) {
-          getLog().info("Compressing " + path + " to " + outFile);
-          IOUtils.copy(is, os);
-        } catch (Throwable t) {
-          this.throwable = t;
+            .replaceFirst(Matcher.quoteReplacement(
+                inputDir.getCanonicalPath()), "") + ".gz");
+        if (outFile.getParentFile().isDirectory() ||
+            outFile.getParentFile().mkdirs()) {
+          try (
+              GZIPOutputStream os = new GZIPOutputStream(
+                  new FileOutputStream(outFile));
+              BufferedReader is = Files.newBufferedReader(path)
+          ) {
+            getLog().info("Compressing " + path + " to " + outFile);
+            IOUtils.copy(is, os);
+          }
+        } else {
+          throw new IOException("Directory " + outFile.getParent()
+              + " does not exist or was unable to be created");
         }
       } catch (Throwable t) {
         this.throwable = t;