Index: src/main/java/org/apache/maven/plugin/javadoc/AbstractJavadocMojo.java
===================================================================
--- src/main/java/org/apache/maven/plugin/javadoc/AbstractJavadocMojo.java	(revision 432943)
+++ src/main/java/org/apache/maven/plugin/javadoc/AbstractJavadocMojo.java	(working copy)
@@ -22,14 +22,18 @@
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.handler.ArtifactHandler;
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.AbstractArtifactResolutionException;
 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
 import org.apache.maven.artifact.resolver.ArtifactResolver;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.javadoc.options.Group;
 import org.apache.maven.plugin.javadoc.options.Tag;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.artifact.InvalidDependencyVersionException;
 import org.apache.maven.reporting.MavenReportException;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
@@ -49,6 +53,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
+import java.util.Set;
 import java.util.StringTokenizer;
 import java.util.Map;
 import java.util.HashMap;
@@ -603,6 +608,13 @@
      */
     protected boolean aggregate;
 
+    /**
+     * Used to resolve artifacts of aggregated modules
+     * 
+     * @component
+     */
+    private ArtifactMetadataSource artifactMetadataSource;
+
     private static final float MIN_JAVA_VERSION = 1.4f;
 
     /**
@@ -1023,7 +1035,7 @@
      * with ',', ':', or ';' and then formatted.
      *
      * @return an array of String objects that contain the package names
-     */
+     */ 
     private String[] getExcludedPackages()
     {
         String[] excludePackages = {};
@@ -1057,12 +1069,23 @@
 
         if ( aggregate && project.isExecutionRoot() )
         {
-            for ( Iterator i = reactorProjects.iterator(); i.hasNext(); )
-            {
-                MavenProject subProject = (MavenProject) i.next();
-
-                classpathElements.add( subProject.getBuild().getOutputDirectory() );
-                populateCompileArtifactMap( compileArtifactMap, subProject.getCompileArtifacts() );
+            try {
+                for (Iterator i = reactorProjects.iterator(); i.hasNext();) {
+                    MavenProject subProject = (MavenProject) i.next();
+                    if (subProject != project) {
+                        classpathElements.add(subProject.getBuild().getOutputDirectory());
+                        Set dependencyArtifacts = subProject.createArtifacts( factory, null, null );
+                        if(!dependencyArtifacts.isEmpty()) {
+                            ArtifactResolutionResult result = resolver.resolveTransitively(dependencyArtifacts, subProject.getArtifact(),
+                                    subProject.getRemoteArtifactRepositories(), localRepository, artifactMetadataSource);
+                            populateCompileArtifactMap(compileArtifactMap, getCompileArtifacts(result.getArtifacts()));
+                        }
+                    }
+                }
+            } catch (AbstractArtifactResolutionException e) {
+                throw new MavenReportException(e.getMessage(), e);
+            } catch (InvalidDependencyVersionException e) {
+                throw new MavenReportException(e.getMessage(), e);
             }
         }
 
@@ -1071,6 +1094,32 @@
     }
 
     /**
+     * Copy from {@link MavenProject#getCompileArtifacts()}
+     * @param artifacts
+     * @return
+     */
+    private List getCompileArtifacts(Set artifacts) {
+        List list = new ArrayList( artifacts.size() );
+
+        for ( Iterator i = artifacts.iterator(); i.hasNext(); )
+        {
+            Artifact a = (Artifact) i.next();
+
+            // TODO: classpath check doesn't belong here - that's the other method
+            if ( a.getArtifactHandler().isAddedToClasspath() )
+            {
+                // TODO: let the scope handler deal with this
+                if ( Artifact.SCOPE_COMPILE.equals( a.getScope() ) || Artifact.SCOPE_PROVIDED.equals( a.getScope() ) ||
+                    Artifact.SCOPE_SYSTEM.equals( a.getScope() ) )
+                {
+                    list.add( a );
+                }
+            }
+        }
+        return list;
+    }
+
+    /**
      * Method to put the artifacts in the hashmap.
      *
      * @param compileArtifactMap the hashmap that will contain the artifacts

