diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/phase/FileItemAssemblyPhase.java b/src/main/java/org/apache/maven/plugins/assembly/archive/phase/FileItemAssemblyPhase.java
index 6246b57..af10ee6 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/phase/FileItemAssemblyPhase.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/phase/FileItemAssemblyPhase.java
@@ -87,8 +87,6 @@
 
             final String outputDirectory1 = fileItem.getOutputDirectory();
 
-            AssemblyFormatUtils.warnForPlatformSpecifics( getLogger(), outputDirectory1 );
-
             final String outputDirectory =
                 AssemblyFormatUtils.getOutputDirectory( outputDirectory1, configSource.getFinalName(), configSource,
                                                         AssemblyFormatUtils.moduleProjectInterpolator(
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddFileSetsTask.java b/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddFileSetsTask.java
index a10e7d0..e9a082e 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddFileSetsTask.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddFileSetsTask.java
@@ -110,9 +110,10 @@
         if ( destDirectory == null )
         {
             destDirectory = fileSet.getDirectory();
+
+            AssemblyFormatUtils.warnForPlatformSpecifics( logger, destDirectory );
         }
 
-        AssemblyFormatUtils.warnForPlatformSpecifics( logger, destDirectory );
 
         destDirectory =
             AssemblyFormatUtils.getOutputDirectory( destDirectory, configSource.getFinalName(), configSource,
diff --git a/src/test/java/org/apache/maven/plugins/assembly/archive/phase/FileItemAssemblyPhaseTest.java b/src/test/java/org/apache/maven/plugins/assembly/archive/phase/FileItemAssemblyPhaseTest.java
index 07d2a71..bc24cb8 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/archive/phase/FileItemAssemblyPhaseTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/archive/phase/FileItemAssemblyPhaseTest.java
@@ -196,10 +196,6 @@
             macLogger.logger.error( "OS=Windows and the assembly descriptor contains a *nix-specific "
                                         + "root-relative reference (starting with slash): /" );
         }
-        else
-        {
-            macLogger.logger.warn( (String) anyObject() );
-        }
 
         final MockAndControlForArchiver macArchiver = new MockAndControlForArchiver( mm );
 
@@ -272,15 +268,6 @@
         macCS.expectInterpolators();
 
         final MockAndControlForLogger macLogger = new MockAndControlForLogger( mm );
-        if ( Os.isFamily( Os.FAMILY_WINDOWS ) )
-        {
-            macLogger.logger.error( "OS=Windows and the assembly descriptor contains a *nix-specific "
-                                        + "root-relative reference (starting with slash): /" );
-        }
-        else
-        {
-            macLogger.logger.warn( (String) anyObject() );
-        }
 
         final MockAndControlForArchiver macArchiver = new MockAndControlForArchiver( mm );
 
