Author: epunzalan
Date: Thu Mar  2 23:19:23 2006
New Revision: 382701

URL: http://svn.apache.org/viewcvs?rev=382701&view=rev
Log:
PR: MRM-27

Fixed this bug that excludes the generated-sources from idea.  Also fixed a bug 
that hides provided and test scoped dependencies from appearing in the library.

Modified:
    
maven/plugins/trunk/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/AbstractIdeaMojo.java
    
maven/plugins/trunk/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/IdeaModuleMojo.java

Modified: 
maven/plugins/trunk/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/AbstractIdeaMojo.java
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/AbstractIdeaMojo.java?rev=382701&r1=382700&r2=382701&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/AbstractIdeaMojo.java
 (original)
+++ 
maven/plugins/trunk/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/AbstractIdeaMojo.java
 Thu Mar  2 23:19:23 2006
@@ -39,8 +39,10 @@
 import java.io.File;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Map;
+import java.util.Set;
 
 /**
  * @author Edwin Punzalan
@@ -222,7 +224,7 @@
             try
             {
                 ArtifactResolutionResult result = 
artifactResolver.resolveTransitively(
-                    project.createArtifacts( artifactFactory, 
Artifact.SCOPE_TEST, null ), project.getArtifact(),
+                    getProjectArtifacts(), project.getArtifact(),
                     managedVersions, localRepo, 
project.getRemoteArtifactRepositories(), artifactMetadataSource );
 
                 project.setArtifacts( result.getArtifacts() );
@@ -236,6 +238,22 @@
                 e.printStackTrace();
             }
         }
+    }
+
+    private Set getProjectArtifacts()
+    {
+        Set artifacts = new HashSet();
+
+        for( Iterator dependencies = project.getDependencies().iterator(); 
dependencies.hasNext(); )
+        {
+            Dependency dep = (Dependency) dependencies.next();
+
+            Artifact artifact = artifactFactory.createArtifact( 
dep.getGroupId(), dep.getArtifactId(), dep.getVersion(), dep.getScope(), 
dep.getType() );
+
+            artifacts.add( artifact );
+        }
+
+        return artifacts;
     }
 
     private Map createManagedVersionMap( ArtifactFactory artifactFactory, 
String projectId,

Modified: 
maven/plugins/trunk/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/IdeaModuleMojo.java
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/IdeaModuleMojo.java?rev=382701&r1=382700&r2=382701&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/IdeaModuleMojo.java
 (original)
+++ 
maven/plugins/trunk/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/IdeaModuleMojo.java
 Thu Mar  2 23:19:23 2006
@@ -42,6 +42,7 @@
 import java.io.InputStreamReader;
 import java.io.Reader;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -241,35 +242,19 @@
 
             //For excludeFolder
             File target = new File( project.getBuild().getDirectory() );
+            File classes = new File( project.getBuild().getOutputDirectory() );
+            File testClasses = new File( 
project.getBuild().getTestOutputDirectory() );
 
-            List excludeFolders = new ArrayList();
-            excludeFolders.add( new File( 
project.getBuild().getOutputDirectory() ).getAbsolutePath() );
-            excludeFolders.add( new File( 
project.getBuild().getTestOutputDirectory() ).getAbsolutePath() );
+            List sourceFolders = Arrays.asList( content.getChildren( 
"sourceFolder" ) );
 
-            if ( target.exists() )
-            {
-                File[] fileNames = target.listFiles();
+            List filteredExcludes = new ArrayList();
+            filteredExcludes.addAll( getExcludedDirectories( target, 
filteredExcludes, sourceFolders ) );
+            filteredExcludes.addAll( getExcludedDirectories( classes, 
filteredExcludes, sourceFolders ) );
+            filteredExcludes.addAll( getExcludedDirectories( testClasses, 
filteredExcludes, sourceFolders ) );
 
-                for ( int i = 0; i < fileNames.length; i++ )
-                {
-                    File fileName = fileNames[i];
-                    if ( fileName.isDirectory() )
-                    {
-                        String absolutePath = fileName.getAbsolutePath();
-                        if ( 
!executedProject.getCompileSourceRoots().contains( absolutePath ) )
-                        {
-                            if ( !excludeFolders.contains( absolutePath ) )
-                            {
-                                excludeFolders.add( absolutePath );
-                            }
-                        }
-                    }
-                }
-
-                for ( Iterator i = excludeFolders.iterator(); i.hasNext(); )
-                {
-                    addExcludeFolder( content, i.next().toString() );
-                }
+            for ( Iterator i = filteredExcludes.iterator(); i.hasNext(); )
+            {
+                addExcludeFolder( content, i.next().toString() );
             }
 
             removeOldDependencies( component );
@@ -350,6 +335,57 @@
         }
     }
 
+    private List getExcludedDirectories( File target, List excludeList, List 
sourceFolders )
+    {
+        List foundFolders = new ArrayList();
+        int dirs = 0;
+
+        if ( target.exists() && !excludeList.contains( 
target.getAbsolutePath() ) )
+        {
+            File[] files = target.listFiles();
+
+            for ( int i = 0; i < files.length; i++ )
+            {
+                File file = files[i];
+                if ( file.isDirectory() && !excludeList.contains( 
file.getAbsolutePath() ) )
+                {
+                    String absolutePath = file.getAbsolutePath();
+                    String url = getModuleFileUrl( absolutePath );
+
+                    for( Iterator sources = sourceFolders.iterator(); 
sources.hasNext(); )
+                    {
+                        String source = ( (Xpp3Dom) sources.next() 
).getAttribute( "url" );
+                        if ( source.equals( url ) )
+                        {
+                            dirs++;
+                            break;
+                        }
+                        else if ( source.indexOf( url ) == 0 )
+                        {
+                            dirs++;
+                            foundFolders.addAll( getExcludedDirectories( new 
File( absolutePath ), excludeList, sourceFolders ) );
+                            break;
+                        }
+                        else
+                        {
+                            foundFolders.add( absolutePath );
+                        }
+                    }
+                }
+            }
+
+            //if all directories are excluded, then just exclude the parent 
directory
+            if ( dirs == 0 )
+            {
+                foundFolders.clear();
+
+                foundFolders.add( target.getAbsolutePath() );
+            }
+        }
+
+        return foundFolders;
+    }
+
     /**
      * Adds the Web module to the (.iml) project file.
      *
@@ -478,10 +514,8 @@
      */
     private void addSourceFolder( Xpp3Dom content, String directory, boolean 
isTest )
     {
-        getLog().debug( "Source folder found: " + directory );
         if ( !StringUtils.isEmpty( directory ) && new File( directory 
).isDirectory() )
         {
-            getLog().info( "Adding source folder to module..." );
             Xpp3Dom sourceFolder = createElement( content, "sourceFolder" );
             sourceFolder.setAttribute( "url", getModuleFileUrl( directory ) );
             sourceFolder.setAttribute( "isTestSource", Boolean.toString( 
isTest ) );


Reply via email to