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 ) );