Index: src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java
===================================================================
--- src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java	(revision 508822)
+++ src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java	(working copy)
@@ -646,6 +646,74 @@
         mockManager.verifyAll();
     }
 
+    public void testReadAssembly_ShouldReadAssemblyWithComponentInterpolationWithoutSiteDirInclusionOrAssemblyInterpolation()
+			throws IOException, AssemblyReadException, InvalidAssemblerConfigurationException
+	 {
+		File componentsFile = fileManager.createTempFile();
+
+		File basedir = componentsFile.getParentFile();
+		String componentsFilename = componentsFile.getName();
+
+		Component component = new Component();
+
+		FileSet fs = new FileSet();
+		fs.setDirectory("${groupId}-dir");
+
+		component.addFileSet(fs);
+
+		FileWriter fw = null;
+
+		try {
+			fw = new FileWriter(componentsFile);
+			new ComponentXpp3Writer().write(fw, component);
+		} finally {
+			IOUtil.close(fw);
+		}
+
+		Assembly assembly = new Assembly();
+		assembly.setId("test");
+
+		assembly.addComponentDescriptor(componentsFilename);
+
+		StringWriter sw = new StringWriter();
+		AssemblyXpp3Writer assemblyWriter = new AssemblyXpp3Writer();
+
+		assemblyWriter.write(sw, assembly);
+
+		StringReader sr = new StringReader(sw.toString());
+
+		configSource.getBasedir();
+		configSourceControl.setReturnValue(basedir, MockControl.ONE_OR_MORE);
+
+		Model model = new Model();
+		model.setGroupId("group");
+		model.setArtifactId("artifact");
+		model.setVersion("version");
+
+		MavenProject project = new MavenProject(model);
+
+		configSource.getProject();
+		configSourceControl.setReturnValue(project);
+
+		configSource.isSiteIncluded();
+		configSourceControl.setReturnValue(false);
+
+		mockManager.replayAll();
+
+		Assembly result = new DefaultAssemblyReader().readAssembly(sr,
+				"testLocation", configSource);
+
+		assertEquals(assembly.getId(), result.getId());
+
+		List fileSets = result.getFileSets();
+
+		assertEquals(1, fileSets.size());
+
+		assertEquals("group-dir", ((FileSet) fileSets.get(0)).getDirectory());
+
+		mockManager.verifyAll();
+	}
+
     public void testReadAssembly_ShouldReadAssemblyWithInterpolationWithoutComponentsOrSiteDirInclusion()
         throws IOException, AssemblyReadException, InvalidAssemblerConfigurationException
     {
Index: src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java
===================================================================
--- src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java	(revision 508822)
+++ src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java	(working copy)
@@ -197,6 +197,8 @@
             AssemblyXpp3Reader r = new AssemblyXpp3Reader();
             assembly = r.read( reader );
 
+            mergeComponentsWithMainAssembly( assembly, configSource );
+                        
             assembly = new AssemblyInterpolator().interpolate( assembly, project, context );
         }
         catch ( IOException e )
@@ -221,8 +223,6 @@
             includeSiteInAssembly( assembly, configSource );
         }
 
-        mergeComponentsWithMainAssembly( assembly, configSource );
-        
         return assembly;
     }
 

