diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractMetadataPackageMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractMetadataPackageMojo.java
index 5851a89..ac1dc06 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractMetadataPackageMojo.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractMetadataPackageMojo.java
@@ -81,13 +81,16 @@
     File[] metaInfVaultDirectory;
 
     /**
-     * The directory containing the metadata to be packaged up into the content package.
-     * Basically containing all files/folders being generated by goal "generate-metadata".
+     * The output directory for goal "generate-metadata" and additional input directory containing the 
+     * metadata to be packaged up into the content package for goal "package".
+     * The directory name is suffixed with {@code -<classifier>} in case a {@link #classifier} is used.
+     * In case of the "package" goal this falls back to the non-suffixed directory name in case the one with
+     * suffix does not exist.
      */
     @Parameter(
             defaultValue = "${project.build.directory}/vault-work",
             required = true)
-    File workDirectory;
+    private File workDirectory;
 
     /**
      * Optional classifier to add to the generated package. If given, the artifact will be attached
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/GenerateMetadataMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/GenerateMetadataMojo.java
index d03a97d..f0beb6c 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/GenerateMetadataMojo.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/GenerateMetadataMojo.java
@@ -469,7 +469,7 @@
         // JCRVLT-331 share work directory to expose vault metadata between process-classes and package phases for
         // multi-module builds.
         getArtifactWorkDirectoryLookup(getPluginContext())
-                .put(getModuleArtifactKey(project.getArtifact()), workDirectory);
+                .put(getModuleArtifactKey(project.getArtifact()), getWorkDirectory(true));
 
         try {
             // find the meta-inf source directory
@@ -1001,7 +1001,7 @@
                     File propsXml = new File(otherWorkDirectory, propsRelPath);
                     if (!propsXml.exists()) {
                         // fallback to work dir (assuming the same folder name)
-                        propsXml = new File(otherWorkDirectory.getParent(), workDirectory.getName() + "/" + propsRelPath);
+                        propsXml = new File(otherWorkDirectory.getParent(), getWorkDirectory(false).getName() + "/" + propsRelPath);
                     }
                     try (InputStream input = new FileInputStream(propsXml)) {
                         props.loadFromXML(input);
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java
index 6cb9ed5..914ba15 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java
@@ -426,7 +426,7 @@
             }
             // then add all files from the workDirectory (they might overlap with the ones from metaInfDirectory, but the duplicates are
             // just ignored in the package)
-            DefaultFileSet fileSet = createFileSet(workDirectory, "");
+            DefaultFileSet fileSet = createFileSet(getWorkDirectory(false), "");
             // issue warning in case of overlaps
             Map<File, File> overwrittenWorkFiles = getOverwrittenProtectedFiles(fileSet, true);
             for (Entry<File, File> entry : overwrittenWorkFiles.entrySet()) {
