From c8e4c605a1954855809303e4b26ceef50e7362c6 Mon Sep 17 00:00:00 2001 From: Harsh Mehta Date: Sat, 29 Nov 2025 23:14:09 +0530 Subject: [PATCH 1/3] [BUG] Add error handling for directory creation in packaging tasks Signed-off-by: Harsh Mehta --- .../org/apache/maven/plugins/war/AbstractWarMojo.java | 5 ++++- .../war/packaging/AbstractWarPackagingTask.java | 5 ++++- .../plugins/war/packaging/ClassesPackagingTask.java | 4 ++-- .../plugins/war/packaging/OverlayPackagingTask.java | 10 +++++----- .../plugins/war/packaging/WarProjectPackagingTask.java | 8 ++++++-- 5 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/apache/maven/plugins/war/AbstractWarMojo.java b/src/main/java/org/apache/maven/plugins/war/AbstractWarMojo.java index 56b1e6c0..2e8a19c9 100644 --- a/src/main/java/org/apache/maven/plugins/war/AbstractWarMojo.java +++ b/src/main/java/org/apache/maven/plugins/war/AbstractWarMojo.java @@ -459,7 +459,10 @@ protected String[] getDependentWarIncludes() { * @throws MojoFailureException in case of failure */ public void buildExplodedWebapp(File webapplicationDirectory) throws MojoExecutionException, MojoFailureException { - webapplicationDirectory.mkdirs(); + if (!webapplicationDirectory.exists() && !webapplicationDirectory.mkdirs()) { + throw new MojoExecutionException( + "Failed to create directory: " + webapplicationDirectory.getAbsolutePath()); + } try { buildWebapp(project, webapplicationDirectory); diff --git a/src/main/java/org/apache/maven/plugins/war/packaging/AbstractWarPackagingTask.java b/src/main/java/org/apache/maven/plugins/war/packaging/AbstractWarPackagingTask.java index ee0fa8d1..5ca23d76 100644 --- a/src/main/java/org/apache/maven/plugins/war/packaging/AbstractWarPackagingTask.java +++ b/src/main/java/org/apache/maven/plugins/war/packaging/AbstractWarPackagingTask.java @@ -254,7 +254,10 @@ protected boolean copyFilteredFile( encoding = context.getResourceEncoding(); } // fix for MWAR-36, ensures that the parent dir are created first - targetFile.getParentFile().mkdirs(); + File parentDir = targetFile.getParentFile(); + if (!parentDir.exists() && !parentDir.mkdirs()) { + throw new MojoExecutionException("Failed to create directory: " + parentDir.getAbsolutePath()); + } context.getMavenFileFilter().copyFile(file, targetFile, true, context.getFilterWrappers(), encoding); } catch (MavenFilteringException e) { diff --git a/src/main/java/org/apache/maven/plugins/war/packaging/ClassesPackagingTask.java b/src/main/java/org/apache/maven/plugins/war/packaging/ClassesPackagingTask.java index 396d8dbb..e87155a2 100644 --- a/src/main/java/org/apache/maven/plugins/war/packaging/ClassesPackagingTask.java +++ b/src/main/java/org/apache/maven/plugins/war/packaging/ClassesPackagingTask.java @@ -52,8 +52,8 @@ public ClassesPackagingTask(Overlay currentProjectOverlay) { @Override public void performPackaging(WarPackagingContext context) throws MojoExecutionException { final File webappClassesDirectory = new File(context.getWebappDirectory(), CLASSES_PATH); - if (!webappClassesDirectory.exists()) { - webappClassesDirectory.mkdirs(); + if (!webappClassesDirectory.exists() && !webappClassesDirectory.mkdirs()) { + throw new MojoExecutionException("Failed to create directory: " + webappClassesDirectory.getAbsolutePath()); } if (context.getClassesDirectory().exists() diff --git a/src/main/java/org/apache/maven/plugins/war/packaging/OverlayPackagingTask.java b/src/main/java/org/apache/maven/plugins/war/packaging/OverlayPackagingTask.java index e9849923..5447b19b 100644 --- a/src/main/java/org/apache/maven/plugins/war/packaging/OverlayPackagingTask.java +++ b/src/main/java/org/apache/maven/plugins/war/packaging/OverlayPackagingTask.java @@ -112,18 +112,18 @@ protected File unpackOverlay(WarPackagingContext context, Overlay overlay) throw * @param overlay the overlay * @return the temp directory for the overlay */ - protected File getOverlayTempDirectory(WarPackagingContext context, Overlay overlay) { + protected File getOverlayTempDirectory(WarPackagingContext context, Overlay overlay) throws MojoExecutionException { final File groupIdDir = new File(context.getOverlaysWorkDirectory(), overlay.getGroupId()); - if (!groupIdDir.exists()) { - groupIdDir.mkdir(); + if (!groupIdDir.exists() && !groupIdDir.mkdir()) { + throw new MojoExecutionException("Failed to create directory: " + groupIdDir.getAbsolutePath()); } String directoryName = overlay.getArtifactId(); if (overlay.getClassifier() != null) { directoryName = directoryName + "-" + overlay.getClassifier(); } final File result = new File(groupIdDir, directoryName); - if (!result.exists()) { - result.mkdirs(); + if (!result.exists() && !result.mkdirs()) { + throw new MojoExecutionException("Failed to create directory: " + result.getAbsolutePath()); } return result; } diff --git a/src/main/java/org/apache/maven/plugins/war/packaging/WarProjectPackagingTask.java b/src/main/java/org/apache/maven/plugins/war/packaging/WarProjectPackagingTask.java index 968b7305..d8e4d2ba 100644 --- a/src/main/java/org/apache/maven/plugins/war/packaging/WarProjectPackagingTask.java +++ b/src/main/java/org/apache/maven/plugins/war/packaging/WarProjectPackagingTask.java @@ -79,9 +79,13 @@ public void performPackaging(WarPackagingContext context) throws MojoExecutionEx // Prepare the INF directories File webinfDir = new File(context.getWebappDirectory(), WEB_INF_PATH); - webinfDir.mkdirs(); + if (!webinfDir.exists() && !webinfDir.mkdirs()) { + throw new MojoExecutionException("Failed to create directory: " + webinfDir.getAbsolutePath()); + } File metainfDir = new File(context.getWebappDirectory(), META_INF_PATH); - metainfDir.mkdirs(); + if (!metainfDir.exists() && !metainfDir.mkdirs()) { + throw new MojoExecutionException("Failed to create directory: " + metainfDir.getAbsolutePath()); + } handleWebResources(context); From 24debb5629c04cc292c491847add024dcb7b9088 Mon Sep 17 00:00:00 2001 From: Harsh Mehta Date: Sat, 4 Jul 2026 12:26:55 +0530 Subject: [PATCH 2/3] [BUG] Fix directory creation logic in OverlayPackagingTask Signed-off-by: Harsh Mehta --- .../maven/plugins/war/packaging/OverlayPackagingTask.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/apache/maven/plugins/war/packaging/OverlayPackagingTask.java b/src/main/java/org/apache/maven/plugins/war/packaging/OverlayPackagingTask.java index 5447b19b..1bfebe25 100644 --- a/src/main/java/org/apache/maven/plugins/war/packaging/OverlayPackagingTask.java +++ b/src/main/java/org/apache/maven/plugins/war/packaging/OverlayPackagingTask.java @@ -114,8 +114,8 @@ protected File unpackOverlay(WarPackagingContext context, Overlay overlay) throw */ protected File getOverlayTempDirectory(WarPackagingContext context, Overlay overlay) throws MojoExecutionException { final File groupIdDir = new File(context.getOverlaysWorkDirectory(), overlay.getGroupId()); - if (!groupIdDir.exists() && !groupIdDir.mkdir()) { - throw new MojoExecutionException("Failed to create directory: " + groupIdDir.getAbsolutePath()); + if (!groupIdDir.exists()) { + groupIdDir.mkdir(); } String directoryName = overlay.getArtifactId(); if (overlay.getClassifier() != null) { From 42241f39d2abd2d210f89ddcccd707db32249ffd Mon Sep 17 00:00:00 2001 From: Harsh Mehta Date: Sun, 5 Jul 2026 11:57:13 +0530 Subject: [PATCH 3/3] Revert: directory creation logic in OverlayPackagingTask Signed-off-by: Harsh Mehta --- .../maven/plugins/war/packaging/OverlayPackagingTask.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/apache/maven/plugins/war/packaging/OverlayPackagingTask.java b/src/main/java/org/apache/maven/plugins/war/packaging/OverlayPackagingTask.java index 1bfebe25..e9849923 100644 --- a/src/main/java/org/apache/maven/plugins/war/packaging/OverlayPackagingTask.java +++ b/src/main/java/org/apache/maven/plugins/war/packaging/OverlayPackagingTask.java @@ -112,7 +112,7 @@ protected File unpackOverlay(WarPackagingContext context, Overlay overlay) throw * @param overlay the overlay * @return the temp directory for the overlay */ - protected File getOverlayTempDirectory(WarPackagingContext context, Overlay overlay) throws MojoExecutionException { + protected File getOverlayTempDirectory(WarPackagingContext context, Overlay overlay) { final File groupIdDir = new File(context.getOverlaysWorkDirectory(), overlay.getGroupId()); if (!groupIdDir.exists()) { groupIdDir.mkdir(); @@ -122,8 +122,8 @@ protected File getOverlayTempDirectory(WarPackagingContext context, Overlay over directoryName = directoryName + "-" + overlay.getClassifier(); } final File result = new File(groupIdDir, directoryName); - if (!result.exists() && !result.mkdirs()) { - throw new MojoExecutionException("Failed to create directory: " + result.getAbsolutePath()); + if (!result.exists()) { + result.mkdirs(); } return result; }