Index: src/main/java/org/apache/maven/plugin/ide/IdeUtils.java
===================================================================
--- src/main/java/org/apache/maven/plugin/ide/IdeUtils.java	(revision 594793)
+++ src/main/java/org/apache/maven/plugin/ide/IdeUtils.java	(working copy)
@@ -239,7 +239,10 @@
         return (Xpp3Dom[]) configurationDomList.toArray( new Xpp3Dom[configurationDomList.size()] );
     }
 
-    public static String getProjectName( String template, IdeDependency dep )
+    /**
+     * Use {@link IdeDependency#getEclipseProjectName()} instead.
+     */
+    protected static String getProjectName( String template, IdeDependency dep )
     {
         return getProjectName( template, dep.getGroupId(), dep.getArtifactId(), dep.getVersion() );
     }
@@ -261,7 +264,7 @@
         return getProjectName( template, project.getGroupId(), project.getArtifactId(), project.getVersion() );
     }
 
-    public static String getProjectName( IdeDependency dep, boolean addVersionToProjectName )
+    private static String getProjectName( IdeDependency dep, boolean addVersionToProjectName )
     {
         return getProjectName( addVersionToProjectName ? PROJECT_NAME_WITH_VERSION_TEMPLATE
                         : PROJECT_NAME_DEFAULT_TEMPLATE, dep );
Index: src/main/java/org/apache/maven/plugin/ide/AbstractIdeSupportMojo.java
===================================================================
--- src/main/java/org/apache/maven/plugin/ide/AbstractIdeSupportMojo.java	(revision 594793)
+++ src/main/java/org/apache/maven/plugin/ide/AbstractIdeSupportMojo.java	(working copy)
@@ -204,6 +204,23 @@
     private Logger logger;
 
     /**
+     * This eclipse workspace is read and all artefacts detected there will be 
+     * connected as eclipse projects and will not be linked to the jars in the 
+     * local repository. Requirment is that it was created with the simular wtp 
+     * settings as the reactor projects, but the project name template my differ.
+     * The pom's in the workspace projects may not contain variables in the 
+     * artefactId, groupId and version tags. 
+     * 
+     * @parameter expression="${eclipse.workspaceToConnect}"
+     */
+    protected String workspace;
+    
+    /**
+     * Cached workspace projects. 
+     */
+    protected IdeDependency[] workspaceArtefacts;
+    
+    /**
      * Getter for <code>artifactMetadataSource</code>.
      * 
      * @return Returns the artifactMetadataSource.
@@ -570,7 +587,7 @@
                         int dependencyDepth = node.getDepth();
                         Artifact art = node.getArtifact();
                         boolean isReactorProject = getUseProjectReferences() && isAvailableAsAReactorProject( art );
-
+                        boolean isWorkspaceProject = !isReactorProject && ( getUseProjectReferences() && isAvailableAsAWorkspaceProject( art ) );
                         // don't resolve jars for reactor projects
                         if ( !isReactorProject )
                         {
@@ -655,7 +672,7 @@
 
                             IdeDependency dep =
                                 new IdeDependency( art.getGroupId(), art.getArtifactId(), art.getVersion(),
-                                                   art.getClassifier(), isReactorProject,
+                                                   art.getClassifier(), isReactorProject || isWorkspaceProject,
                                                    Artifact.SCOPE_TEST.equals( art.getScope() ),
                                                    Artifact.SCOPE_SYSTEM.equals( art.getScope() ),
                                                    Artifact.SCOPE_PROVIDED.equals( art.getScope() ),
@@ -803,7 +820,48 @@
         }
         return false;
     }
-
+    
+    /**
+     * @return an array with all dependencies avaliable in the workspace.
+     */
+    protected IdeDependency[] getWorkspaceArtefacts() {
+        return this.workspaceArtefacts;
+    }
+    
+    /**
+     * Utility method that locates a project in the workspace for the given artifact.
+     * 
+     * @param artifact the artifact a project should produce.
+     * @return <code>true</code> if the artifact is produced by a reactor projectart.
+     */
+   private boolean isAvailableAsAWorkspaceProject( Artifact artifact )
+   {
+        IdeDependency[] workspaceArtefacts = getWorkspaceArtefacts();
+        for ( int index = 0; workspaceArtefacts != null && index < workspaceArtefacts.length; index++ )
+        {
+            IdeDependency workspaceArtefact = workspaceArtefacts[index];
+            if ( workspaceArtefact.getGroupId().equals( artifact.getGroupId() )
+                && workspaceArtefact.getArtifactId().equals( artifact.getArtifactId() ) )
+            {
+                if ( workspaceArtefact.getVersion().equals( artifact.getVersion() ) )
+                {
+                    workspaceArtefact.setAddedToClasspath( true );
+                    logger.debug( "Using workspace project: " + workspaceArtefact.getEclipseProjectName() );
+                    return true;
+                }
+                else
+                {
+                    getLog().info(
+                                   "Artifact "
+                                       + artifact.getId()
+                                       + " already available as a workspace project, but with different version. Expected: "
+                                       + artifact.getVersion() + ", found: " + workspaceArtefact.getVersion() );
+                }
+            }
+        }
+        return false;
+    }
+   
     private Map createManagedVersionMap( ArtifactFactory artifactFactory, String projectId,
                                          DependencyManagement dependencyManagement )
         throws MojoExecutionException
Index: src/main/java/org/apache/maven/plugin/eclipse/EclipsePlugin.java
===================================================================
--- src/main/java/org/apache/maven/plugin/eclipse/EclipsePlugin.java	(revision 594793)
+++ src/main/java/org/apache/maven/plugin/eclipse/EclipsePlugin.java	(working copy)
@@ -35,6 +35,7 @@
 import org.apache.maven.artifact.handler.ArtifactHandler;
 import org.apache.maven.model.Resource;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.eclipse.reader.ReadWorkspaceLocations;
 import org.apache.maven.plugin.eclipse.writers.EclipseClasspathWriter;
 import org.apache.maven.plugin.eclipse.writers.EclipseManifestWriter;
 import org.apache.maven.plugin.eclipse.writers.EclipseOSGiManifestWriter;
@@ -1276,6 +1277,39 @@
      */
     public String getProjectNameForArifact( Artifact artifact )
     {
+        IdeDependency[] workspaceArtefacts = getWorkspaceArtefacts();
+        for ( int index = 0; workspaceArtefacts != null && index < workspaceArtefacts.length; index++ )
+        {
+            IdeDependency workspaceArtefact = workspaceArtefacts[index];
+            if ( workspaceArtefact.isAddedToClasspath()
+                && workspaceArtefact.getGroupId().equals( artifact.getGroupId() )
+                && workspaceArtefact.getArtifactId().equals( artifact.getArtifactId() ) )
+            {
+                if ( workspaceArtefact.getVersion().equals( artifact.getVersion() ) )
+                {
+                    return workspaceArtefact.getEclipseProjectName();
+                }
+            }
+        }
         return IdeUtils.getProjectName( calculateProjectNameTemplate(), artifact );
     }
+    
+    /**
+     * {@inheritDoc}
+     */
+    protected IdeDependency[] getWorkspaceArtefacts() {
+        if ( this.workspaceArtefacts == null && this.workspace != null )
+        {
+            try
+            {
+                this.workspaceArtefacts = ReadWorkspaceLocations.readWorkspace( this.workspace, getLog() );
+            }
+            catch ( IOException e )
+            {
+                getLog().error( "could not read workspace", e );
+                this.workspaceArtefacts = new IdeDependency[0];
+            }
+        }
+        return this.workspaceArtefacts;
+    }
 }
Index: src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseClasspathWriter.java
===================================================================
--- src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseClasspathWriter.java	(revision 594793)
+++ src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseClasspathWriter.java	(working copy)
@@ -376,7 +376,7 @@
 
         if ( dep.isReferencedProject() && !config.isPde() )
         {
-            path = "/" + IdeUtils.getProjectName( config.getProjectNameTemplate(), dep ); //$NON-NLS-1$
+            path = "/" + dep.getEclipseProjectName(); //$NON-NLS-1$
             kind = ATTR_SRC;
         }
         else if ( dep.isReferencedProject() && config.isPde() )
Index: src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadWebSettingsWriter.java
===================================================================
--- src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadWebSettingsWriter.java	(revision 594793)
+++ src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadWebSettingsWriter.java	(working copy)
@@ -169,7 +169,7 @@
                     log.debug( "RadWebSettingsWriter: dependency " + dependency.toString()
                         + " selected for inclusion as lib-module" );
                     
-                    String depName = IdeUtils.getProjectName( config.getProjectNameTemplate(), dependency );
+                    String depName = dependency.getEclipseProjectName();
                     String depJar = dependency.getArtifactId() + ".jar";
 
                     writer.startElement( WEBSETTINGS_LIBMODULE );
Index: src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseProjectWriter.java
===================================================================
--- src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseProjectWriter.java	(revision 594793)
+++ src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseProjectWriter.java	(working copy)
@@ -194,7 +194,7 @@
                 if ( dep.isReferencedProject() )
                 {
                     writer.startElement( "project" ); //$NON-NLS-1$
-                    writer.writeText( IdeUtils.getProjectName( config.getProjectNameTemplate(), dep ) );
+                    writer.writeText( dep.getEclipseProjectName());
                     writer.endElement();
                 }
             }
Index: pom.xml
===================================================================
--- pom.xml	(revision 594793)
+++ pom.xml	(working copy)
@@ -62,6 +62,24 @@
           </systemProperties>
         </configuration>
       </plugin>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>build-helper-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>add-source</id>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>add-source</goal>
+            </goals>
+            <configuration>
+              <sources>
+                <source>src/main/eclipse</source>
+              </sources>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
     </plugins>
   </build>
   <dependencies>
